PHPMailler在某些情况下不起作用

时间:2018-04-24 09:25:17

标签: php phpmailer

我正在使用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

2 个答案:

答案 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();