我试图从PHP页面通过GMail的SMTP服务器发送电子邮件,但是我收到此错误:
身份验证失败[SMTP:SMTP服务器不支持身份验证(代码:250,响应:mx.google.com为您服务,[98.117.99.235] SIZE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]
有人可以帮忙吗?这是我的代码:
<?php
require_once "Mail.php";
$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <ramona@microsoft.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$host = "smtp.gmail.com";
$port = "587";
$username = "testtest@gmail.com";
$password = "testtest";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
13 回答
我有一个没有"@gmail.com" sufix的GSuite帐户的解决方案 . 另外我认为它适用于@ gmail.com的GSuite帐户,但还没有尝试过 . 首先,您应该拥有更改GSuite帐户选项"allos¿w less secure app"的权限 . 如果您具有权限(您可以签入帐户设置 - >安全性),则必须停用"two step factor authentication"转到页面末尾并设置为"yes"以允许不太安全的应用程序 . 就这样 . 如果您没有权限更改这些选项,则此线程的解决方案将无效 . 检查https://support.google.com/a/answer/6260879?hl=en以更改"allow less..."选项 .
我不推荐Pear Mail . 它自2010年以来一直没有更新 . 还阅读源文件;源代码几乎已过时,以PHP 4风格编写,并且已经发布了许多错误/错误(谷歌) . 我正在使用Swift Mailer .
Swift Mailer 集成到用PHP 5编写的任何Web应用程序中,提供灵活而优雅的面向对象的方法来发送具有多种功能的电子邮件 .
它是一个免费的开放源代码,您可以Download Swift Mailer并上传到您的服务器 . (功能列表从所有者网站复制) .
Gmail SSL / SMTP和Swift Mailer的工作示例就在这里......
我希望这有帮助 . 快乐的编码...... :)
问题中列出的代码需要进行两处更改
SSL连接需要端口465 .
组
另外,查看端口25是否有效 .
使用phpMailer库通过Gmail发送邮件请从Github下载库文件
要在Ubuntu中安装PEAR的Mail.php,请运行以下命令集:
使用Swift mailer,通过Gmail凭据发送邮件非常简单:
您的代码似乎没有使用TLS(SSL),即necessary to deliver mail to Google (and using ports 465 or 587) .
您可以通过设置来完成此操作
$host = "ssl://smtp.gmail.com";
你的代码看起来很像this example,它引用了主机名方案中的ssl:// .
Gmail需要端口465,而且它是来自phpmailer的代码:)
我也有这个问题 . 我设置了正确的设置并启用了不太安全的应用程序,但它仍然无效 . 最后,我启用了这个https://accounts.google.com/UnlockCaptcha,它对我有用 . 我希望这可以帮助别人 .
SwiftMailer可以使用外部服务器发送电子邮件 .
这是一个显示如何使用Gmail服务器的示例: