当前位置: 首页 > 知识库问答 >
问题:

无法使用gmail使用php发送电子邮件-授权错误

柴瀚
2023-03-14

我是新的PHP和试图建立一个网站与注册表格。用户应该收到一封带有确认链接的电子邮件(因为我有一个免费的托管服务器,我正在尝试使用gmail服务器)。问题是,我正在努力与电子邮件PHP代码。我尝试使用PHPMailer函数如下:

<?php
/**
 * This example shows settings to use when sending via Google's Gmail servers.
 */

//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');
require 'PHPMailer/PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;

//Tell PHPMailer to use SMTP
$mail->isSMTP();

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';

//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6

//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';

//Whether to use SMTP authentication
$mail->SMTPAuth = true;

//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "MYEMAIL@gmail.com";

//Password to use for SMTP authentication
$mail->Password = "MYPASSWORD";

//Set who the message is to be sent from
$mail->setFrom('example@example.com', 'Name S');

//Set an alternative reply-to address
$mail->addReplyTo('example@example.com', 'Name S');

//Set who the message is to be sent to
$mail->addAddress('email@gmail.com', 'John Doe');

//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';

//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML("HELLo");

//Replace the plain text body with one created manually
//$mail->AltBody = 'This is a plain-text message body';

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}
?>

我尝试了587和465端口。还尝试了ssl和tls。每次尝试运行代码时,都会出现以下错误:

服务器-

还有,我收到一封来自Gmail的邮件,主题是“有人知道你的密码”。我打开电子邮件,发现这个“
嗨,Manny,有人刚刚用你的密码登录了你的Google帐户MYEMAIL@gmail.com我在运行php页面15分钟后收到了这封电子邮件。

我关闭了“两步验证”,关闭了“允许不太安全的应用”。似乎没有任何帮助。谁能帮帮我?

共有1个答案

薛钧
2023-03-14

去年我也遇到了同样的问题:代码(VB. Net)是好的,那么凭据在哪里。问题是gmail不喜欢在很远的网络服务器(我的主机)上的某个应用程序,在那里尝试使用相同的用户名。

我(在两种不同的情况下)通过以下方式进行了修复:

  • 从该服务器登录gmail一次(使用远程桌面)。
  • 在这里登录https://accounts.google.com/DisplayUnlockCaptcha 从我的电脑到“解锁”远程连接

然后再次测试代码。

 类似资料:
  • 需要使用spring boot从gmail发送邮件 但我得到了一个错误,就像 此应用程序没有/error的显式映射,因此您将其视为回退。 出现意外错误(type=内部服务器错误,状态=500)。邮件服务器连接失败;嵌套异常是com.sun.mail.util.MailConnectExc0019:无法连接到主机,端口:smtp.gmail.com,587;超时5000;嵌套异常是:java.net

  • 我正在尝试使用gmail从Delphi发送电子邮件。我有Indy10.5.9.0和Delphi XE3。 我从中获得了示例代码:http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/ 我还尝试了其他示例代码,但结果相同。 我有libeay32.dll和ssleay32.dll从这里:http://w

  • 我正在使用C#使用SMTP和gmail服务器发送电子邮件。 下面是我用于发送电子邮件的代码。我遇到了一些错误,即。 SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。 我做错了什么?我如何使用gmail发送电子邮件。

  • 我有以下代码: 我无法连接到gmail,连接出现错误,但是所有连接信息都是正确的,不知道是什么阻止了我发送电子邮件的代码中的连接,我无法发送简单的电子邮件,我一点也不知道它是什么。 感谢您的帮助

  • 问题内容: 我试图直接在单击按钮时打开Gmail的电子邮件发送表单,但这总是显示用于发送电子邮件的选项列表。 我这样做是为了打开GMail表单: 但这不是打开GMail表单。我应该怎么做才能打开GMail表单,请帮忙。 有什么办法吗? 问题答案: 在线路上使用一些东西

  • 我在ASP. Net Core中工作,并尝试从gmail使用smtp客户端发送电子邮件。有以下代码,但不起作用也看过以下帖子,但不起作用http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/ 它会跟踪错误 系统NotSupportedException:SMTP服务器不支持身份验证