我正在使用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认为我的应用不安全?如果我的应用程序不安全,为什么使用我的个人电子邮件仍可以正常工作?
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
并且仅当我登录到G Suit管理控制台并将“允许安全程度较低的应用”设置为“开”时,它才有效
这就是它的工作方式。
我曾经有过类似的问题。 ..
所以代替这个:
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
尝试以下方法:
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
希望这会有所帮助!
答案 1 :(得分:0)
使用gmail,如果您不想打开“安全性较低的应用程序”(安全性实际上并没有降低,但这是一个单独的主题),唯一的选择是使用XOAUTH2身份验证。错误消息链接到PHPMailer的examples,documentation和the troubleshooting guide会将其发送给您。这里有太多要重新发布的内容。
请注意,这与使用Google的API 不相同。使用XOAUTH2,您仍然可以使用常规SMTP。但是请注意,与所有OAuth实现一样,它非常令人讨厌,设置也很脆弱,而且反馈机制差,这使您可能很难找出它是否停止工作。