首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法通过PHPMailer使用Gmail SMTP服务器发送电子邮件,出现错误:在端口587上提交邮件需要SMTP身份验证。如何修复?

无法通过PHPMailer使用Gmail SMTP服务器发送电子邮件,出现错误:在端口587上提交邮件需要SMTP身份验证。如何修复?
EN

Stack Overflow用户
提问于 2013-04-17 06:34:58
回答 14查看 394.5K关注 0票数 78

我想发送一封电子邮件使用Gmail SMTP服务器通过PHP邮件

这是我的代码

代码语言:javascript
复制
<?php
require_once('class.phpmailer.php');

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = 'MyUsername@gmail.com';
$mail->Password = 'valid password';
$mail->SMTPAuth = true;

$mail->From = 'MyUsername@gmail.com';
$mail->FromName = 'Mohammad Masoudian';
$mail->AddAddress('anotherValidGmail@gmail.com');
$mail->AddReplyTo('phoenixd110@gmail.com', 'Information');

$mail->IsHTML(true);
$mail->Subject    = "PHPMailer Test Subject via Sendmail, basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
$mail->Body    = "Hello";

if(!$mail->Send())
{
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
  echo "Message sent!";
}
?>

但我收到以下错误

代码语言:javascript
复制
Mailer Error: SMTP Error: The following recipients failed: anotherValidGmail@gmail.com

SMTP server error: SMTP AUTH is required for message submission on port 587

我的域名是vatandesign.ir

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-04-17 06:45:11

代码语言:javascript
复制
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "email@gmail.com";
$mail->Password = "password";
$mail->SetFrom("example@gmail.com");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("email@gmail.com");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }

上面的代码已经过测试并为我工作过。

可能是因为您需要$mail->SMTPSecure = 'ssl';

此外,请确保您没有为该帐户打开两步验证,因为这也会导致问题。

已更新

您可以尝试将$mail->SMTP更改为:

代码语言:javascript
复制
$mail->SMTPSecure = 'tls';

值得注意的是,某些SMTP服务器会阻止连接。某些SMTP服务器不支持SSL (或TLS)连接。

票数 145
EN

Stack Overflow用户

发布于 2015-07-03 05:12:44

所以我刚刚解决了我自己的"SMTP连接失败“错误,我想发布这个解决方案,以防它对其他人有帮助。

我使用了PHPMailer示例gmail.phps文件中给出的完全相同的代码。当我使用MAMP时,它很简单地工作,然后当我把它移到我的个人服务器上时,我得到了SMTP连接错误。

我读过的所有堆栈溢出答案,以及来自PHPMailer的所有故障排除文档都表明这不是PHPMailer的问题。这是服务器端的设置问题。我尝试了不同的端口(587,465,25),我尝试了'SSL‘和'TLS’加密。我检查了php.ini文件中是否启用了openssl。我检查了一下,没有防火墙问题。一切都检查过了,还是一无所获。

解决方案是我必须删除这一行:

代码语言:javascript
复制
$mail->isSMTP();

现在一切都正常了。我不知道为什么,但它是有效的。我的其余代码是从PHPMailer示例文件中复制和粘贴的。

票数 32
EN

Stack Overflow用户

发布于 2014-01-22 20:05:26

还值得注意的是,如果您启用了双因素身份验证,您将需要设置一个特定于应用程序的密码,以取代您的电子邮件帐户的密码。

您可以按照以下说明生成特定于应用程序的密码:https://support.google.com/accounts/answer/185833

然后将$mail->Password设置为您的特定于应用程序的密码。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16048347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档