Что мне нужно для совместимого заголовка электронной почты
Я пытаюсь отправить электронное письмо с сайта, который я создаю, но он попадает в папку спама 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
Надеюсь, что это поможет