Пропойца отправить e mail сообщение. Программная отправка email, используя различные сервисы

теперь для других бит, которые стоят

IP-адреса являются вашими почтовыми серверами

a пусть ваш ip-адрес ptr указывает на имя, которое также разрешает одно и то же ip FQDNS

b иметь сервер helo / ehlo с any.domain.com, где domain.com совпадает с доменом имени на шаге A (не то же имя для resons ниже}

c иметь, что helo / ehlo servername также разрешает ip вашего сервера

d добавьте следующую spf-запись в это имя helo / ehlo «v = spf1 a -all» (что означает, что helo / ehlo с этим именем из ip это имя указывает только на}

e добавьте следующие строки идентификатора-отправителя к имени helo / ehlo {чисто для полноты "spf2.0 / mfrom, pra -all" {т.е. нет пользователей @ this-domain}

f добавьте следующий spf к имени FQDNS и любым другим именам хостов для вашего сервера «v = spf1 -all» {т.е. никакие машины никогда не будут helo / ehlo как это имя, а не пользователи @ this-domain}

{поскольку имя fqdns может быть определено ботами / инфекциями, лучше не позволять этому имени использоваться в приветствиях helo / ehlo непосредственно, достаточно, чтобы он был из того же домена, что и идентификация helo / ehlo, чтобы доказать справедливость обоих }

2018-12-04T00:00Z

лучший способ не наводнения почтового сервера

не так много вы можете сделать по этому поводу, кроме проверки с вашим администратором почтового сервера (если это учетная запись хостинга / не входит в ваш контроль). но если требование - одно электронное письмо одному получателю на одно событие, это не должно быть слишком большой проблемой. вещи, которые, как правило, засоряют почтовые системы, - это электронные письма с сотнями (или более) получателей.

если у вас есть события, которые отключаются все время, возможно, подумайте об их консолидации и отправке электронного письма, которое суммирует их периодически.

отправка сообщений, как будто от конкретного пользователя, но все же ясно из вашей заявки (для того, чтобы жалобы и т. д. вернулись к вам) без нарушения надлежащего почтового этикета

вы можете это сделать, используя заголовок «Reply-To», который затем будет использовать этот адрес вместо адреса From, когда будет составлено сообщение электронной почты.

вы также должны установить заголовок «Return-Path» любого электронного письма, так как электронная почта без этого часто отфильтровывается.

From: Return-Path: Reply-To:

конфигурирование и использование идентификатора-отправителя, доменных ключей, SPF, обратных DNS и т. д., чтобы убедиться, что ваши электронные письма правильно идентифицированы

все это сильно зависит от того, насколько вы владеете своими почтовыми и DNS-серверами. spf / sender-id и т. д. - все проблемы DNS, поэтому вам нужно иметь доступ к DNS.

в вашем примере это может представлять собой проблему. поскольку вы настраиваете почту для определенного пользователя, для этого пользователя должен быть установлен SPF (например), установленный в их DNS, чтобы ваш почтовый сервер был действительным отправителем. вы можете себе представить, как беспорядочно (если не прямо невозможно) это получилось бы с рядом пользователей с различными именами доменов.

как для обратного DNS и т. п., это действительно зависит. большинство клиентов интернет-провайдера и т. д. ... просто проверит, чтобы установить обратный DNS. (т.е. 1.2.3.4 разрешает host.here.domain.com, даже если host.here.domain.com не разрешает вернуться к 1.2.3.4). это связано с количеством общего хостинга (где почтовые серверы часто сообщают о себе как имя домена клиента, а не настоящий почтовый сервер).

существует несколько строгих сетей, требующих сопоставления обратного DNS, но для этого требуется, чтобы вы контролировали почтовый сервер, если он не совпадает в первую очередь.

если вы можете быть более конкретным, я могу предоставить немного больше советов, но, как правило, для людей, которым необходимо отправлять почту приложения, и у них нет кучи контроля над своей средой, я бы предложил следующее:

  • обязательно установите «Return-Path»
  • приятно добавить информацию о вашем приложении и злоупотреблениях в заголовки, например: «X-Mailer» и «X-Abuse-To» (это обычные заголовки, только для информационных целей)
  • убедитесь, что для DNS-адреса сервера исходящей почты установлен обратный DNS-адрес

Очень часто приходится сталкиваться с отправкой электронных писем из программного кода. За примерами далеко ходить не нужно.

Данная статья является подсказкой и не открывает ничего нового, но прежде чем её писать, посмотрел похожее в интернете и был довольно удивлён тому, что почти везде предлагают или не работающее или устаревшее решение, либо просто написано неграмотно.

Первое, что не стоит делать по этим примерам – это использовать System.Web.Mail, который уже давно устарел, а начиная с Visual Studio 2010 библиотеку System.Web даже и не добавить, не зная полного пути к соответствующей DLL.
Вместо него предлагается использовать библиотеку System.Net.
using System.Net; using System.Net.Mail;
Итак, самое простое, оно же самое важное и часто использующееся - это отправка письма со своего почтового сервера, на котором настроен SMTP-клиент. Как вы понимаете, сервер может быть как и тот, на котором работает приложение, так и удалённый, на котором у вас есть права отправлять письма без дополнительной авторизации.

Пример кода для отправки письма с локальной машины:
", "[email protected]")){ mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("127.0.0.1")){//Здесь должен быть адрес почтового сервера и порт, если требуется sc.Send(mm); } }

С использованием почтовых служб, таких как Gmail, Yandex, Mail.ru и т.д. всё то же самое, только добавляются параметры с авторизацией.

SMTP-сервер: smtp.gmail.com
Порт: 587
using (MailMessage mm = new MailMessage("Name ", "[email protected]")){ mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587)){ sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential("[email protected]", "GmailPassword"); sc.Send(mm); } }

SMTP-сервер: smtp.yandex.ru
Порт: 25
using (MailMessage mm = new MailMessage("Name ", "[email protected]")){ mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25)){ sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential("[email protected]", "YandexPassword"); sc.Send(mm); } }

SMTP-сервер: smtp.mail.ru
Порт: 25
using (MailMessage mm = new MailMessage("Name ", "[email protected]")){ mm.Subject = "Mail Subject"; mm.Body = "Mail Body"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25)){ sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential("[email protected]", "MailRuPassword"); sc.Send(mm); } }
Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера (smtp.inbox.ru, smtp.list.ru и smtp.bk.ru).

Как вы видите, для того, чтобы использовать любой другой почтовый сервис в ваших программах, необходимо только выяснить адрес SMTP-сервера и порт, а также правила авторизации.

Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени.

Теги: email, отправка писем, smtp



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: