Что мне нужно для соответствующего заголовка электронного письма

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь отправить электронное письмо с сайта, который создаю, но оно попадает в папку со спамом 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), который указывает на реальное имя хоста машины (и соответствует прямому поиску).
  • Включите идентификатор сообщения (или убедитесь, что местная почтовая программа добавит его для вас).
  • Пропустите свою электронную почту через Спам-убийца и посмотрите, каким правилам плохой оценки он соответствует.Избегайте их совпадения.
  • Использовать Идентифицированная почта DomainKeys для цифровой подписи ваших сообщений.

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

$email = "me@site.com";
$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 = "me@site.com";
$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);

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

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

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

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

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

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

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

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

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

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

Я не думаю, что DK/SPF может быть необходим (поскольку существует множество веб-серверов без поддержки DK/SPF).Может быть множество факторов, которые могут привести к его блокировке (по крайней мере, 10 тысяч различных критериев и методов..p0f, серый список, серый список, черный список и т. д. и т. п.).Убедитесь, что ваше электронное письмо правильно отформатировано (это имеет БОЛЬШОЕ значение).Посмотрите библиотеки, которые генерируют для вас полный заголовок.таким образом у вас будет меньше шансов совершить ошибку.

Добавить запись SPF очень просто.Тебе стоит попробовать.

Это для Dreamhost Plus Googlemail, который вы также должны рекламировать IP -адрес WebServer (в моем случае, строка перед Googlemail) Последняя строка говорит серверу сделать мягкое отклонение (отметьте как спам, но не удаляйте) Я использую Это вместо «-» (удалить), потому что документация Google говорит так :-)

Это TXT Record 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. : 208.113.244.0/24 IP4: 208.97.132.74 IP4: 67.205.36.71 Включите: ASPMX.GOOGLEMAIL.com MX ~ Все

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

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