公司的项目使用谷歌邮箱,用户注册成功后,会发送一封邮件到用户注册的邮箱。但是我注册一个号却并没有收到邮件,于是我在代码里var_dump打印结果,发现有错误提示:SMTP connect() failed.
查阅大量资料,发现很多人都遇到过这个问题,最后终于找到解决方法。
解决方法:
在发送邮件代码里面增加一行:
$mail->SMTPSecure = 'ssl';
或者:
$mail->SMTPOptions = array('ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
));
将上面代码放进去。
下面是谷歌邮件全部代码
include_once "class.phpmailer.php";
include_once "class.smtp.php";
//获取一个外部文件的内容
$mail=new PHPMailer();
$body="测试内容";
//设置smtp参数
$mail->IsSMTP();
$mail->SMTPAuth=true;
$mail->SMTPKeepAlive=true;
$mail->SMTPSecure= "ssl";
$mail->Host="smtp.gmail.com";
$mail->Port=465;
//填写你的email账号和密码
$mail->Username="发件人谷歌邮箱账号@gmail.com";
//这里大家需要填写谷歌邮箱的登录密码,qq和网易是授权码,谷歌不一样直接是登录密码
$mail->Password="发件人邮箱密码";
//设置邮件头from字段
$mail->From="发件人谷歌邮箱账号@gmail.com";
//设置发件人名字
$mail->FromName="test";
$mail->Subject="邮件标题";
//邮件内容
$mail->AltBody=$body;
$mail->WordWrap=50; // set word wrap
$mail->MsgHTML($body);
//设置回复地址
$mail->AddReplyTo("发件人谷歌邮箱地址","test");
//添加附件,此处附件与脚本位于相同目录下否则填写完整路径
//附件的话我就注释掉了
//$mail->AddAttachment("accessory.jpg");
//$mail->AddAttachment("accessory.zip");
//设置邮件接收方的邮箱和姓名
$mail->AddAddress("收件人邮箱地址","hello");
//使用HTML格式发送邮件
$mail->IsHTML(true);
//通过Send方法发送邮件
//根据发送结果做相应处理
if(!$mail->Send()){
echo "Mailer Error:".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}