Email 发送电子邮件时PEAR邮件身份验证失败
因为我发现PHP中的内置邮件函数存在安全漏洞,所以我尝试使用PEAR。我已经在本地主机(WAMP服务器2.2)上安装并进行了必要的配置。但是,每次我尝试发送电子邮件时,都会显示以下消息Email 发送电子邮件时PEAR邮件身份验证失败,email,smtp,pear,php,Email,Smtp,Pear,Php,因为我发现PHP中的内置邮件函数存在安全漏洞,所以我尝试使用PEAR。我已经在本地主机(WAMP服务器2.2)上安装并进行了必要的配置。但是,每次我尝试发送电子邮件时,都会显示以下消息 错误:身份验证失败[SMTP:从服务器接收到无效的响应代码(代码:535,响应:5.7.8用户名和密码不被接受。在5.7.8了解更多信息http://support.google.com/mail/bin/answer.py?answer=14257 gg10sm16772067pbc.46-gsmtp)] 用户
错误:身份验证失败[SMTP:从服务器接收到无效的响应代码(代码:535,响应:5.7.8用户名和密码不被接受。在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";
}
?>
用于创建SMTP对象的用户名必须是您的完整gmail电子邮件地址,例如fred。flintstone@gmail.com主机变量应该是“smtp.gmail.com”-它不需要以“ssl://”开头 这将导致发送一封没有问题的电子邮件。(我将您的代码放入一个名为20031009.php的文件中,修复了错误,做了一些其他更改,以便它可以与我的gmail帐户一起工作,并运行了它,结果如下。) 另一方面,您似乎需要交换$from和$to的值。:) 这是完整的工作代码(帐户和电子邮件详细信息已更改) 谢谢。。我已经尝试了好几天了&我尝试了很多组合,但用户名总是我的gmail屏幕名。。
$ php 20031009.php
Message sent
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";
}