我正在使用PHPmailer发送邮件。我发送的邮件正在使用Gmail。但它在mail.com上的帐户中不起作用。有谁知道为什么?结果似乎是成功的。但是邮件还没来。
示例无效:developer@chef.net
注意:我使用相同的设置。我的邮件服务器在另一台服务器上。
如果我使用的代码是:
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPAuth = true; // authentication enabled
$mail->SetLanguage("tr", "class/language");
$mail->CharSet = "utf-8";
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "example";
$mail->Port = 25; // or 465
$mail->IsHTML(true);
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Username = "example@example.com";
$mail->Password = "example";
$mail->SetFrom($To[1], $To[0]);
$mail->Subject = 'example';
$mail->Body = 'example';
$mail->AddAddress($From[1], $From[0]);
if ($mail->Send()) {
echo 'success';
} else {
echo $mail->ErrorInfo;
}
我也被重定向到我的服务器CloudFlare。
PHPMailer日志输出:
2018-04-24 11:24:49 SERVER -> CLIENT: 220 centos.controlsunucu.com ESMTP Postfix
2018-04-24 11:24:49 CLIENT -> SERVER: EHLO oxyn.org
2018-04-24 11:24:49 SERVER -> CLIENT: 250-centos.controlsunucu.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
2018-04-24 11:24:49 CLIENT -> SERVER: STARTTLS
2018-04-24 11:24:49 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2018-04-24 11:24:49 CLIENT -> SERVER: EHLO oxyn.org
2018-04-24 11:24:49 SERVER -> CLIENT: 250-centos.controlsunucu.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
2018-04-24 11:24:49 CLIENT -> SERVER: AUTH CRAM-MD5
2018-04-24 11:24:49 SERVER -> CLIENT: 334 PDg0NDE4Mjc5NS4xNDYxOTU4NkBjZW50b3MuY29udHJvbHN1bnVjdS5jb20+
2018-04-24 11:24:49 CLIENT -> SERVER: aW5mb0BkaXN0aWxlaWNraS5jb20gYWQ1MmQ2YjZjZTkzZTE3OTMzZDU5ZGNmNzZmNTJlYWY=
2018-04-24 11:24:49 SERVER -> CLIENT: 235 2.7.0 Authentication successful
2018-04-24 11:24:49 CLIENT -> SERVER: MAIL FROM:<apawebit@gmail.com>
2018-04-24 11:24:49 SERVER -> CLIENT: 250 2.1.0 Ok
2018-04-24 11:24:49 CLIENT -> SERVER: RCPT TO:<developer@chef.net>
2018-04-24 11:24:49 SERVER -> CLIENT: 250 2.1.5 Ok
2018-04-24 11:24:49 CLIENT -> SERVER: DATA
2018-04-24 11:24:49 SERVER -> CLIENT: 354 End data with <CR><LF>.<CR><LF>
2018-04-24 11:24:49 CLIENT -> SERVER: Date: Tue, 24 Apr 2018 14:24:49 +0300
2018-04-24 11:24:49 CLIENT -> SERVER: To: =?utf-8?Q?=C3=96zg=C3=BCr_Can_KARAG=C3=96Z?= <developer@chef.net>
2018-04-24 11:24:49 CLIENT -> SERVER: From: =?utf-8?Q?=C3=96zg=C3=BCr_Can_KARAG=C3=96Z?= <apawebit@gmail.com>
2018-04-24 11:24:49 CLIENT -> SERVER: Subject: Example
2018-04-24 11:24:49 CLIENT -> SERVER: Message-ID: <75ef49ca7263c41f42336be38def81f9@oxyn.org>
2018-04-24 11:24:49 CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer)
2018-04-24 11:24:49 CLIENT -> SERVER: MIME-Version: 1.0
2018-04-24 11:24:49 CLIENT -> SERVER: Content-Type: text/html; charset=utf-8
2018-04-24 11:24:49 CLIENT -> SERVER:
2018-04-24 11:24:49 CLIENT -> SERVER: Example
2018-04-24 11:24:49 CLIENT -> SERVER:
2018-04-24 11:24:49 CLIENT -> SERVER: .
2018-04-24 11:24:50 SERVER -> CLIENT: 250 2.0.0 Ok: queued as 918D133B8F
2018-04-24 11:24:50 CLIENT -> SERVER: QUIT
2018-04-24 11:24:50 SERVER -> CLIENT: 221 2.0.0 Bye
答案 0 :(得分:3)
设置$mail->SMTPDebug = 2
以查看SMTP会话,这样您就可以绝对确定邮件已被接受,并且您不会错过任何来自服务器的有趣响应。除此之外,请检查您的垃圾邮件文件夹,如果您的ISP黑屏,请向他们投诉。
您对$From
和$To
的使用看起来是错误的方法,并且无法判断他们是否使用用户提供的值 - 允许用户提供您使用的地址作为From
地址是一种可靠的方式来阻止您的电子邮件或垃圾邮件,因为它是伪造的,并会破坏SPF和DMARC检查。
在证书方面,您的网站使用Cloudflare与mail.com的邮件服务器使用的证书无关。如果您有非常具体原因,您应该只禁用证书检查 - “因为它使其工作”不是一个正当理由。
您从gmail地址发送而不通过gmail发送 - 这将无法通过SPF检查。如果您要发送来自Gmail地址,必须通过Gmail发送,而不是您的ISP。
不太可能成为一个因素,但您使用的是旧版本的PHPMailer - 升级到6.0。
答案 1 :(得分:0)
1 - 更改此部分
$mail->SMTPSecure = 'tls';
$mail->Host = "example";
$mail->Port = 25;
$mail->Username = "example@example.com";
$mail->Password = "example";
to =&gt;&gt;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = "your account in gmail";
$mail->Password = "your password account in gmail";
2 - 并添加此部分:
$mail->isHTML();