我有使用 phpMailer 的 PHP 代码,该代码使用 Gmail。当终端打开 PHP 存档时,电子邮件到达了应有的位置,但是当我上传到服务器时,如果电子邮件从未到达邮件,则它们只会到达最终目的地。
就我而言,我想发送到电子邮件[电子邮件受保护],这也是 Gmail 电子邮件。
我只是不明白为什么电子邮件在发送到 Hotmail 或 Gmail 帐户([受保护的电子邮件])时却能到达最终目的地,但发送到 [受保护的电子邮件](即Gmail 也是如此)不起作用。
PHP代码:
<?php
date_default_timezone_set('Etc/UTC');
require 'PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587; //same problem with other ports
$mail->SMTPSecure = 'tls'; //same problem with ssl
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "password";
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
$mail->setFrom($email, $name);
$mail->addAddress('[email protected]', 'exemple Name');
$mail->Subject = 'Contact';
$mail->Body = $message;
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
我找到了答案,我的服务器来自 GoDaddy:
美国托管提供商 GoDaddy 对发送电子邮件施加了非常严格(几乎变得几乎无用)的限制。他们阻止向除他们自己的服务器之外的所有服务器发送到端口 25、465 和 587 的出站 SMTP。这个问题是 Stack Overflow 上许多令人沮丧的问题的主题。如果您发现脚本在本地计算机上可以运行,但在将其上传到 GoDaddy 时却不能运行,那么您就会遇到这种情况。 GoDaddy 对该解决方案的记录非常糟糕:您必须通过他们的服务器发送,并且还禁用所有安全功能、用户名和密码(很好,是吧?!),为您提供 PHPMailer 的配置:
$mail->isSMTP(); $mail->Host = 'relay-hosting.secureserver.net'; $mail->Port = 25; $mail->SMTPAuth = false; $mail->SMTPSecure = false;
GoDaddy 还拒绝发送属于任何 AOL、Gmail、Yahoo、Hotmail、Live、Aim 或 MSN 域的发件人地址(请参阅他们的文档)。这是因为所有这些域名都部署了 SPF 和 DKIM 防伪造措施,伪造您的发件人地址就是伪造。
您可能会发现更容易切换到更开明的托管提供商。
我猜你缺少 IsSMTP() 设置:
$mail = new PHPMailer();
$mail->IsSMTP();