Лучший способ отправить письмо из моего веб-приложения, чтобы оно выглядело так, как будто оно пришло из моей учетной записи. - PullRequest
1 голос
/ 08 февраля 2009

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

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

Однако меня беспокоит, что почтовое сообщение выглядит как спам для почтовых фильтров.

Есть ли правильный способ сделать это?

Я заметил на странице "контактов" в блоге WordPress, что-то очень похожее сделано. Заголовки электронной почты выглядят так:

To: email@domain.com
Subject: [Test Blog] =?UTF-8?B?aGVsbA==?=
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
From:=?UTF-8?B?aGVsbA==?=<sender@senderdomain.com>
Message-Id: <20090207234737.39C9522802F3@web7.sat.wordpress.com>
Date: Sat,  7 Feb 2009 23:47:37 +0000 (UTC)
Return-Path: donotreply@wordpress.com

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

Кроме того, кто получит уведомление о невозможности доставки в этом примере? Будет ли это идти к sender@senderdomain.com или будет donotreply@wordpress.com?

Ответы [ 6 ]

2 голосов
/ 08 февраля 2009

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

Тем не менее, есть некоторые системы, которые набирают популярность, которые могут помешать вам отправлять электронную почту с чьим-либо адресом электронной почты - особенно SPF, Sender Policy Framework По сути, почтовый сервер, который реализует SPF, будет проверять домен адреса From каждого полученного е-мейла и сверьтесь с этим доменом напрямую, чтобы узнать, авторизует ли он э-мейл. Например, если ваш сервер mydomain.com, адрес электронной почты пользователя - abcdef@gmail.com, а получатель - blah@example.com,

  1. mydomain.com контакты example.com через SMTP, чтобы попытаться отправить электронное письмо
  2. example.com ищет записи SPF для gmail.com
  3. example.com проверяет, есть ли mydomain.com в списке доменов, которым разрешено отправлять электронную почту с доменом gmail.com
  4. Если это не так, электронная почта блокируется

Кроме того, я обнаружил сообщение на форуме , в котором говорится, что Return-Path - это место назначения для уведомлений о невозможности доставки. Очевидно, этот заголовок устанавливается на основе значения команды SMTP MAIL FROM.

0 голосов
/ 08 февраля 2009

Тот, кто находится в заголовке «От», получит уведомление о невозможности доставки.

Для фильтрации - это действительно зависит больше от темы и тела вашего сообщения, чем от адреса. Итак, с этим сказал, пара идей ....

  1. Используйте HTML-кодирование, а не обычный текст с простым форматированием (я знаю, что, вероятно, есть аргумент, идущий в другую сторону, но по моему личному опыту HTML проходит чаще)
  2. Всегда включайте нижний колонтитул с («Это письмо было отправлено вам из ... бла-бла»), чтобы идентифицировать его; если вы не хотите, чтобы люди знали, что он исходит от вашей системы (то есть действительно выдает себя за пользователя «От»), вам нужно найти более законный способ выполнить требование.
  3. Если это вообще возможно, используйте реальный адрес вашей системы в качестве адреса «От», а адрес пользователя в качестве «Ответа».
0 голосов
/ 08 февраля 2009

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

0 голосов
/ 08 февраля 2009

Если я правильно понимаю стандарт ( RFC 822 ), это именно то, для чего предназначен заголовок Отправитель (см. §4.4.2. SENDER / RESENT-SENDER). Тем не менее, я бы использовал другой подход и использовал официальный контактный адрес вашего сайта в заголовке С и поместил адрес пользователя в заголовок Reply-To . Может быть, добавить какой-нибудь шаблонный текст, в котором четко указано, откуда приходит почта.

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

0 голосов
/ 08 февраля 2009

Не делай этого.

Это действительно зависит от того, как настроено ваше почтовое реле, но на самом деле просто не делайте этого. Заголовок из заголовка должен содержать адрес электронной почты, который отправил письмо, в вашем случае webmaster@whwhat.com. Если вы хотите, чтобы люди отвечали на другой адрес, вы всегда можете использовать заголовок Reply-To. Вот некоторые заметки.

0 голосов
/ 08 февраля 2009

Установка полей электронной почты, как правило, тривиальна, но точный способ сделать это зависит от языка и структуры, которые вы используете, которые вы не упоминаете. Обычно речь идет о создании нового объекта электронной почты и выполнении чего-либо вроде:

email.from = "From Name <fromemailaddress@example.com>";

Вы можете установить конкретный адрес от адреса своего пользователя, если хотите, это не редкость, хотя я лично не фанат. Вы также можете установить в поле from что-то вроде: «Имя отправителя (через имя вашего сайта) ».

...