【发布时间】:2012-08-15 16:18:31
【问题描述】:
我想通过 PHP Mailer 使用 Gmail SMTP 服务器发送电子邮件。
我正在我的机器上运行 Zend Server Community Edition。
以下是我的代码(经过编辑以隐藏某些机密信息)。
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
$body = "test msg";
$mail->IsSMTP();
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = "587";
$mail->Username = "<valid-id>";
$mail->Password = "<valid-password>";
$mail->SetFrom('a@b.c', 'Name');
$mail->AddReplyTo("a@b.c","Name");
$mail->Subject = "subject";
$mail->MsgHTML($body);
$address = "d@e.f";
$mail->AddAddress($address, "halo:);
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message sent!";
}
尽管彻底遵循 PHP Mailer wiki 页面中的示例,我还是无法相应地发送电子邮件。
这是函数生成的错误信息:
SMTP -> 错误:无法连接到服务器:连接尝试 失败,因为连接方没有正确响应后 一段时间,或建立连接失败,因为已连接 主机未能响应。 (10060) 以下发件人地址失败: a@b.c 邮件程序错误:以下发件人地址失败:a@b.c
请就此事给我建议。谢谢。
【问题讨论】:
-
smtp 服务器可能会在 smtp 会话期间进行一些检查,例如与垃圾邮件作斗争。
b.c- 不存在的域,所以它不想从这个域路由邮件 -
我之前使用了有效域,它生成了完全相同的消息。
-
这不仅仅是关于域。 GMail 对垃圾邮件的打击非常激烈。很可能,他们还会检查整个电子邮件地址是否有效(它存在于域中)。尝试从您自己的域发送邮件并创建一个类似
noreplay@domain.com的电子邮件帐户,以便其他邮件服务器看到From地址是有效的。如果您不希望它接收任何邮件,可以将此电子邮件的配额设置为 0MB。
标签: php smtp phpmailer zend-server