Outlook没有收到来自php脚本的电子邮件

时间:2016-09-01 20:51:54

标签: php email outlook phpmailer live

好的,我在这里结束了。我有一个客户端,其网站托管在GoDaddy上,并使用Outlook。我编写了一个PHP脚本,用于通过其网站上的联系表单向其中一个域名电子邮件地址发送邮件。

我可以将此电子邮件发送到除outlook / exchange / live / microsoft帐户之外的每个服务。

我读到使用PHPMailer是一个好主意,所以这就是我目前用来发送邮件的内容:

//$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug  = 2;                      
$mail->SMTPAuth   = true;                   
$mail->SMTPSecure = "ssl";                  
$mail->Host       = "a2plcpnl0287.prod.iad2.secureserver.net";       
$mail->Port       = 465;                    
$mail->Username   = "test@alamohomefinance.com";    
$mail->Password   = "xxxxxxx";          
$mail->SetFrom('yourname@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->Subject    = "PHPMailer Test Subject via smtp (hotmail), basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; 
$mail->MsgHTML($body);

$address = "jakerevans2@live.com"; 

if(!$mail->Send()) {
    error_log("Error from calculator!". $mail->ErrorInfo); 
} else {
 error_log("Success from calculator!");
}

此电子邮件会发送到我的Gmail帐户和其他一些帐户,但不会发送到我的.live帐户或我客户的Outlook地址。

到目前为止,我已尝试过在互联网上找到的所有内容,但没有任何效果。任何想法或想法?

谢谢!

编辑: Godaddy服务器的SPF记录为:v = spf1 include:spf.protection.outlook.com -all

我已经从https://www.port25.com/dkim-wizard/创建了一个DKIM密钥,并向GoDaddy添加了一条DKIM TXT记录,其中包含以下详细信息:

主持人:key1._domainkey.alamohomefinance.com TXT值:k = rsa \; P = MIIBIjA ...

我添加了DKIM记录,其中包含以下详细信息: 姓名:_dmarc.alamohomefinance.com TXT值:v = DMARC1; P =检疫; SP =无; RUF =的mailto:user@example.com; RF = afrf; PCT = 100; RI = 86400

我现在正在测试这些变化是否有所作为......

2 个答案:

答案 0 :(得分:0)

首先,你应该看看the PHPMailer troubleshooting guide,其中有一些关于GoDaddy的部分,以及许多其他问题。

如果启用服务器消息的调试输出,您将获得更好的反馈,因此请设置SMTPDebug = 2,并查看其内容。

已知GoDaddy会阻止出站SMTP,并且通常只是无法连接(请参阅有关此问题的许多问题),或者在您将其透明地重定向到其邮件服务器时导致TLS验证失败。

在您的代码中,您已获得smtp.live.com主机,但此用户名为:

$mail->Username   = "a2plcpnl0287.prod.iad2.secureserver.net"

secureserver.net是用于GoDaddy邮件服务器的域名,该用户名是实际GoDaddy邮件服务器的名称,因此您似乎不太可能将其用作用户ID对于live.com,特别是因为GoDaddy会经常轮换邮件服务器,所以你不可能每次都得到同一个 - 是真的你的live.com的登录ID

我也怀疑你的问题:你不需要连接到live.com发送电子邮件到live.com - 没有什么能阻止你发送到live.com地址通过gmail连接,所以听起来你可能有一个概念问题。 HostUsernamePassword属性适用于您通过发送的邮件服务器,而不是您将发送到的邮件服务器>

正如我所说的,通常GoDaddy根本不允许使用远程SMTP,所以如果您在没有使用GoDaddy邮件服务器的情况下让它工作,我会感到非常惊讶,所以我怀疑你&#39我有其他的工作,而不是你的想法。

我还可以看到您在一个过时的示例上基于您的代码,因此请确保您正在运行最新的PHPMailer。

更新

我发现一些关键的东西。代码不会调用$mail->isSMTP();。这意味着它根本不使用SMTP,它使用默认的mail()功能,因此没有任何SMTP配置会产生任何差异。该消息将提交给您的本地邮件服务器,然后通过GoDaddy的服务器进行中继。查看邮件服务器的日志文件,查看发生的情况,通常是/var/log/mail.log或类似情况。

答案 1 :(得分:0)

http://mxtoolbox.com/blacklists.aspx上检查您的服务器IP。我注意到微软对黑名单非常挑剔。我遇到了一个全新的I.P地址,这个地址是通过明显的不良代表获得的。如果您在共享帐户IP上的godaddy,则很可能默认情况下阻止ip或整个子网。