由于我发现PHP中的内置邮件功能存在安全漏洞,我尝试使用PEAR。我安装了&在我的localhost(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";
}
?>
答案 0 :(得分:2)
用于创建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";
}