使用 PHP 和 Gmail 通过 SMTP 发送邮件无法到达

问题描述 投票:0回答:1

我有使用 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 防伪造措施,伪造您的发件人地址就是伪造。

您可能会发现更容易切换到更开明的托管提供商。

php email server phpmailer
1个回答
1
投票

我猜你缺少 IsSMTP() 设置:

$mail = new PHPMailer();
$mail->IsSMTP();
© www.soinside.com 2019 - 2024. All rights reserved.