Как отправлять чистые сообщения электронной почты из вашего приложения?

StackOverflow https://stackoverflow.com/questions/108292

  •  01-07-2019
  •  | 
  •  

Вопрос

При разработке приложения, которое рассылает уведомления по электронной почте, каковы наилучшие методы

  1. чтобы ваша хостинговая компания не пометила вас как спамера.(Обложка любого из:)
    • лучший способ не перегружать почтовый сервер
    • лучшие продукты для почтовых серверов, если бы вы установили свой собственный
    • отправка сообщений как от конкретного пользователя, но при этом явно из вашего приложения (чтобы гарантировать, что жалобы и т. д. будут возвращены вам), не нарушая этикета электронной почты.
    • любые другие извлеченные уроки
  2. клиент получателя не помечает его как спам?(Обложка любого из:)
    • настройка и использование идентификатора отправителя, ключей домена, SPF, обратного DNS и т. д., чтобы убедиться, что ваши электронные письма правильно идентифицируются.
    • лучшие методы заголовков SMTP, чтобы избежать пометки как спама при отправке электронных писем пользователям (например, совместное использование заголовков Sender и From)
    • любые другие извлеченные уроки

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

Это было полезно?

Решение

лучший способ не перегружать почтовый сервер

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

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

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

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

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

бывший.

From: me@me.com
Return-Path: me@me.com
Reply-To: auto@myapp.com

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

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

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

что касается обратного 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 установлен для IP-адреса вашего сервера исходящей почты.

Другие советы

сначала быстрая коррекция предыдущего

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

для работы spf путь возврата/отправитель конверта должен быть yourapp@yourdomain.com

и убедитесь, что запись spf для yourdomain.com {или, если spf для каждого пользователя} для yourapp@yourdomain.com разрешает отправку почты на сервер, на котором размещается приложение/отправляет электронную почту

этот отправитель конверта — это адрес, на который будут приходить все возвраты/ошибки

Теперь Sender-ID отличается полностью, он проверяет возвратный патч/конверт-состав и от:Адрес {сохраненный внутри сообщения} при отправке из:hisname yourapp@yourdomain.com Ответить:его имя его адрес@hisdomain.com

Это будет не проблема при отправке из:его имя его адрес@hisdomain.com

Это будет, и вы должны добавить возмущение:hisname yourapp@yourdomain.com, поскольку это указывает на игнорирование от:для проверки идентификатора отправителя используйте это вместо этого, поскольку оно было отправлено вами от его имени

теперь о других вещах, которые стоят того

упомянутые IP — это ваши почтовые серверы

a Иметь точку PTR вашего IP на имя, которое также решается для тех же IP fqdns

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

c, чтобы это имя сервера helo/ehlo также разрешалось в IP-адрес вашего сервера

d Добавьте следующую запись SPF в это имя Helo/ehlo "v = spf1 a -all" {значение разрешить Helo/ehlo с этим именем из IP -имени. Это имя только на}

e Добавить следующие линии отправителя в имени Helo/ehlo {чисто для полноты "SPF2.0/MFROM, PRA-ALL" {IE нет пользователей@This Domain}

f Добавьте следующий SPF в FQDNS-NAME и любые другие имена хостов для вашего сервера "V = spf1 -all" {то есть ни один машины никогда не будут HELO/EHLO в качестве этого имени и нет пользователей@This Domain}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top