我正在使用PHPMailer发送电子邮件,我的代码与我的个人gmail帐户配合良好,但是,当我将个人电子邮件切换到域电子邮件时,它不起作用。
我的域名电子邮件由G suit托管。我已经启用了两步验证并为两封电子邮件设置了应用密码。
以下是我的代码:
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'xxxe@gmail.com'; //personal email
$mail->Password = 'xxx-personal-app-password'; //personal app passwrod
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
这是与我的个人Gmail帐户一起使用的。
对于我的域电子邮件,我仅将用户名和密码更改为域电子邮件和域 gmail 应用密码,但它不起作用。
$mail->Username = 'xxx@domain.com';//domain email
$mail->Password = 'xxx-domain-app-password'; //domain app password
它显示错误消息:
无法发送邮件。邮件程序错误: SMTP 错误: 无法进行身份验证。
只有当我登录到G suit管理控制台并将"允许用户管理他们对安全性较低的应用程序的访问"设置为"开"而不是选择"禁用访问或允许用户管理其访问权限"时,它才有效。这是因为我的应用密码错误还是 Google 认为我的应用不安全?如果我的应用程序不安全,为什么我的个人电子邮件可以正常工作?
有人可以帮助我解决这个问题吗?
只有当我登录到 G 套装管理控制台并将"允许安全性较低的应用程序"设置为"开"时,它才有效
这就是它的工作原理。
我曾经遇到过类似的问题。
所以取而代之的是:
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
试试这个:
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
希望这有帮助!
对于 Gmail,如果您不想打开"安全性较低的应用程序"(这并不是真正不安全,但这是一个单独的主题(,唯一的选择是使用XOAUTH2身份验证。PHPMailer 的示例、文档和错误消息链接的故障排除指南将您发送到那里。这里要转发的内容太多了。
请注意,这与使用Google 的 API 不同。有了XOAUTH2您仍然可以使用常规SMTP。但请注意,像所有OAuth实现一样,它的设置非常不愉快,非常脆弱,糟糕的反馈机制意味着你可能很难发现它是否停止工作。