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

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

$header = "From: site <sales@site.com>\r\n"; $header .= "To: $name <$email>\r\n"; $header .= "Subject: $subject\r\n"; $header .= "Reply-To: site <sales@site.com>" . "\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); 

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

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

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

 $ email = "me@site.com";
 $ subject = "Простой тест";
 $ body = "Простой тест";
 $ header = "From: site \ r \ n";
 $ header. = "To: $ name \ r \ n";
 $ header. = "Subject: $ subject \ r \ n";
 $ header. = "Ответить на: сайт".  "\ Г \ п";
 $ header. = "MIME-VERSION: 1.0 \ r \ n";
 $ header. = 'Content-type: text / html;  charset = iso-8859-1 '.  "\ Г \ п";
 $ phpversion = phpversion ();
 $ header. = "X-Mailer: PHP v $ phpversion \ r \ n";
 почта ($ электронной почты, $ при условии, $ тела, $ заголовка);

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

 $ email = "me@site.com";
 $ subject = "Простой тест";
 $ body = "Простой тест";
 $ header = "From: site \ r \ n";
 $ header. = "MIME-VERSION: 1.0 \ r \ n";
 $ header. = 'Content-type: text / html;  charset = iso-8859-1 '.  "\ Г \ п";
 $ phpversion = phpversion ();
 $ header. = "X-Mailer: PHP v $ phpversion \ r \ n";
 почта ($ электронной почты, $ при условии, $ тела, $ заголовка);

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

 mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com"); 

Есть еще несколько доказательств того, что настоящий ванильный sendmail может иметь проблемы с этим! Надеемся, что у вас есть «постфикс» в качестве поддержки почтового ящика PHP на вашем целевом сервере.

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

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

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

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

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

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

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

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

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

Это один для Dreamhost плюс googlemail. Вы также должны объявить IP-адрес веб-сервера (в моем случае, перед 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

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