Что мне нужно для совместимого заголовка электронной почты

Я пытаюсь отправить электронное письмо с сайта, который я создаю, но он попадает в папку спама yahoo. Это письмо отправляет учетные данные. Что я могу сделать, чтобы узаконить его?

$header = "From: site <[email protected]>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <[email protected]>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Ответ 1

В дополнение к предложениям Теда Персиваля вы можете попытаться использовать PHPMailer, чтобы создавать электронные письма для вас, а не вручную создавать заголовки. Я широко использовал этот класс и не имел никаких проблем с тем, что электронная почта была отклонена как спам от Yahoo или кого-либо еще.

Ответ 2

  • Не используйте HTML в своем письме.
  • Отправьте его через законный почтовый сервер со статическим IP-адресом и обратным DNS-сервером (PTR), который указывает на имя реального хоста машины (и соответствует поиску в прямом направлении).
  • Включить идентификатор сообщения (или убедиться, что локальная почтовая программа добавляет его для вас).
  • Запустите свой адрес электронной почты через SpamAssassin и посмотрите, какие правила с плохой оценкой совпадают. Избегайте их соответствия.
  • Используйте MailKeys Identified Mail для цифровой подписи ваших сообщений.

Ответ 3

Я просто успешно попробовал следующее из моего Yahoo! Веб-хостинг:

$email = "[email protected]";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "To: $name \r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site " . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Однако у вас есть дублирование в заголовке, вам нужно всего лишь сделать следующее:

$email = "[email protected]";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Ответ 4

Существует также вероятность того, что "sendmail" (который находится под функцией PHP mail()) нуждается в дополнительных параметрах. Если у вас возникли проблемы с заголовками возвратов (такими как Return-Path), которые не заданы с тем, что вы их установили, возможно, вам придется использовать параметр пятый mail(). Пример:

mail('[email protected]', 'Subject', $mail_body, $headers, " -f [email protected]");

Есть еще несколько доказательств того, что настоящий ванильный sendmail может иметь проблемы с этим! Надеюсь, у вас есть "postfix" в качестве поддержки PHP на основе mail() на вашем целевом сервере.

Ответ 5

В дополнение к предложениям Теда Персиваля убедитесь, что IP-адрес, по которому идет электронная почта, является законным источником для электронной почты в соответствии с запись SPF на сайте .com. Если site.com не имеет записи SPF, добавление одного (что позволяет, например, соответствующий IP-адрес), может помочь получить электронные письма от спам-фильтров.

И если вам абсолютно необходимо использовать HTML в своем письме, убедитесь, что вы также включили в него текстовую версию; вы должны использовать тип содержимого "multipart/alternative" вместо "text/html".

Ответ 6

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

Ответ 7

Тед и Тим имеют отличные предложения. Как и Шаббибоб. Мы используем PHPMailer и не имеем проблем с фильтрами спама.

Следует отметить, что многие спам-фильтры будут считать НЕ имеющую текстовую версию против вас, если вы используете формат MIME. Вы могли бы добавить все заголовки и текстовую версию самостоятельно или просто позволить PHPMailer или почтовую библиотеку PEAR позаботиться об этом для вас. Наличие текстовой версии может или не может помочь, но это хорошая практика и удобство для пользователя.

Я понимаю, что ваш пример кода - это просто образец, но стоит сказать: никогда не оставляйте предоставленные пользователем данные в своих заголовках. Убедитесь, что вы подтвердили, что это данные, которые вы ожидаете. Тривиально превратить php mail script в открытое реле, и никто этого не хочет.

Ответ 8

Проверьте rfc 822 и rfc 2045 для формата электронной почты. Я считаю, что класс электронной почты python очень прост в работе. Я предполагаю, что php PEAR делает то же самое (согласно более ранним сообщениям). Также заголовок и тело разделяются "\ r\n\r\n", не уверен, что ваш код автоматически вставляет это, но вы можете попробовать добавить это в заголовок.

Я не думаю, что DK/SPF может понадобиться (так как там есть много веб-серверов без поддержки DK/SPF). Могут быть много факторов, которые могут вызвать блокировку (по крайней мере, 10K различных критериев и методов.. p0f, greylisting, greylisting, blacklisting и т.д. И т.д.). Убедитесь, что ваша электронная почта правильно отформатирована (это приводит к большой разнице). Посмотрите на библиотеки, которые генерируют полный заголовок для вас.. таким образом у вас меньше всего шансов на ошибку.

Ответ 9

Добавление записи SPF очень просто. Вы должны попробовать.

Этот для Dreamhost плюс googlemail Вы также должны рекламировать ваш IP-адрес webserver (в моем случае строка перед googlemail) Последняя строка сообщает серверу о мягком отказе (отмечайте как спам, но не удаляйте) Я использую его вместо "-" (удалить), потому что в документации Google сказано: -)

Это запись TXT v = spf1 ip4: 64.111.100.0/24 ip4: 66.33.201.0/24 ip4: 66.33.216.0/24 ip4: 208.97.132.0/24 ip4: 208.97.187.0/24 ip4: 208.113.200.0/24 ip4: 208.113.244.0/24 ip4: 208.97.132.74 ip4: 67.205.36.71 включают в себя: aspmx.googlemail.com mx ~ all

Надеюсь, что это поможет