发送电子邮件时 PEAR 邮件身份验证失败
Posted
技术标签:
【中文标题】发送电子邮件时 PEAR 邮件身份验证失败【英文标题】:PEAR mail authentication failure when sending emails 【发布时间】:2013-11-30 14:42:34 【问题描述】:由于我发现 php 中的内置邮件功能存在安全漏洞,我尝试使用 PEAR。我已经在我的本地主机(WAMP 服务器 2.2)上安装并进行了必要的配置。但是,每次我尝试发送电子邮件时,都会显示以下消息。
error: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.8 Username and Password not accepted. Learn more at 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 gg10sm16772067pbc.46 - gsmtp)]
.
用户名和密码都正确我已经检查了一遍又一遍。我已经检查了其他成员的在线文档和类似问题,但我仍然被这个问题所困扰。非常感谢对此问题的任何见解。顺便说一下,这里是我用来发送电子邮件的 PHP 代码。
<?php
require "Mail.php";
$from = "myemail@here.com";
$to = "mysender@here.com";
$subject= "hiii";
$body = "\n\nEmail contents here";
$host = "ssl://smtp.gmail.com";//"smtp.gmail.com";
$port = "465";//"587";
$user = "my username";
$pass = "mypassword";
$headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject);
$smtp = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass));
$mail = @$smtp->send($to, $headers, $body);
if(PEAR::isError($mail))
echo "error: $mail->getMessage()";
else
echo "Message sent";
?>
【问题讨论】:
【参考方案1】:您用于创建 SMTP 对象的用户名必须是您的完整 gmail 电子邮件地址,例如fred.flintstone@gmail.com 和主机变量应该只是“smtp.gmail.com” - 它不需要以“ssl://”开始
这将导致发送电子邮件没有问题。 (我将您的代码放入名为 20031009.php 的文件中,修复了错误,进行了一些其他更改,以便它可以与我的 gmail 帐户一起使用并运行它,结果如下。)
$ php 20031009.php
Message sent
另一方面,您似乎需要交换 $from 和 $to 的值。 :)
这是完整的工作代码(帐户和电子邮件详细信息已更改)
require "Mail.php";
$to = "mysender@here.com";
$from = "myemail@here.com"; // the email address
$subject = "hiii";
$body = "\n\nEmail contents here";
$host = "smtp.gmail.com";
$port = "587";
$user = "my username";
$pass = "mypassword";
$headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject);
$smtp = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass));
$mail = @$smtp->send($to, $headers, $body);
if (PEAR::isError($mail))
echo "error: $mail->getMessage()";
else
echo "Message sent";
【讨论】:
谢谢。 :) .. 尝试了好几天,我尝试了很多组合,但用户名始终是我的 gmail 屏幕名称..以上是关于发送电子邮件时 PEAR 邮件身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP PEAR 邮件和 Exchange Server 2016 发送电子邮件
使用 Pear Mail 发送纯文本和 html 电子邮件(如何设置“Content-Type”并正确使用边界)
身份验证失败 [SMTP:STARTTLS 失败(代码:220,响应:2.0.0 准备启动 TLS)]
如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?