目前我正在使用PHP邮件功能或CodeIgnitor邮件功能发送邮件。 来自邮件的ID可以是任何域名,例如xyz @ gmail.com,xyz @ yahoo.com,xyz @ hotmail.com
此外,邮件可以是任何域名。
当FROM设置为除YAHOO之外的任何邮件时,我的邮件会正确发送。 无法从YAHOO的任何邮件发送来自PHP邮件的邮件。 雅虎阻止我的邮件吗?
我该如何解决这个问题?
答案 0 :(得分:1)
您无法使用邮件服务器代表上述域名成功发送邮件。这些域中的每一个都在DNS中使用称为SPF(发件人策略框架)记录的东西,它告诉所有收件人邮件服务器检查SPF以确认发件人IP与SPF相同。您需要通过自己的SMTP服务器发送电子邮件。
GMAIL&的SPF示例YAHOO
v=spf1 redirect=_spf.google.com
v=spf1 redirect=_spf.mail.yahoo.com
使用此网站检查域中是否存在SPF记录:
在我看来,您最好的选择是将邮件中继到每个域的正确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