Использование почты PHP из нескольких почтовых клиентов (Yahoo | Google | Hotmail | Rediff | Личный почтовый домен)

В настоящее время я использую функцию почты PHP или функцию почты CodeIgnitor для отправки почты. Из идентификатора почты может быть любой домен, например xyz@gmail.com, xyz@yahoo.com, xyz@hotmail.com

Также почтой может быть любой домен.

Мои письма отправляются надлежащим образом, когда FROM установлено на любую почту, отличную от той, что принадлежит YAHOO. У вас возникли проблемы с отправкой почты с PHP-почты из любой почты YAHOO. Является ли Yahoo блокированием моих писем?

Как я могу решить эту проблему ?

Вы не можете отправить почту успешно от имени указанных выше доменов, используя свой почтовый сервер. В каждом из этих доменов есть что-то, что используется в DNS-отчете SPF (Sender Policy Framework), которая сообщает всем получателям почтовые разделители, которые проверяют SPF, чтобы подтвердить, что IP-адреса отправителей совпадают с SPF. Вам нужно будет отправить электронное письмо через свои SMTP-серверы, передав их самостоятельно.

Пример SPF для GMAIL & YAHOO

v=spf1 redirect=_spf.google.com v=spf1 redirect=_spf.mail.yahoo.com 

Проверьте, существует ли запись SPF в домене с помощью этого сайта:

http://mxtoolbox.com/spf.aspx

На мой взгляд, ваш лучший вариант – передать почту на правильные SMTP-серверы на домен. Вы можете сделать это очень легко, используя PHPMailer . Если домен, заданный в параметре FROM, является частным образом управляемым доменом, тогда вы должны иметь возможность ретранслировать от имени, если нет записи SPF, и ваш IP-адрес не включен в черный список.

Сайт для проверки того, включен ли ваш IP-адрес отправки:

http://mxtoolbox.com/blacklists.aspx

Пример того, как вы можете выбрать, какие параметры SMTP используются для определенного домена:

 $email = 'xyz@yahoo.com'; $domain = explode('@', $email) ; switch ($domain[1]) { case 'yahoo.com': //NOT REAL SMTP SETTINGS! $mail->Host = 'smtp1.yahoo.com'; $mail->SMTPAuth = true; $mail->Username = 'user@yahoo.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; break; case 'gmail.com': //NOT REAL SMTP SETTINGS! $mail->Host = 'smtp1.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'user@yahoo.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; break; } //Rest of PHP Mailer code