SMTP connect() failed解决方案

1、首先检查php是否安装openssl模块
<?php
echo !extension_loaded('openssl')?"Not Available":"Available";
2、接下来下载PHPMailer模块放在Vendor目录下
3、码代码
function send_email($to,$subject='',$content=''){
Vendor('PHPMailer.PHPMailerAutoload');
$mail = new \PHPMailer();
$mail->IsSMTP(); // 启用SMTP
$mail->Host="smtp.qq.com"; //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPSecure = "ssl"; //目前规定必须使用ssl,非ssl的协议已经不支持了
$mail-> Port = 465; //端口号
//$mail->SMTPDebug = 2; //用于debug PHPMailer信息
$mail->SMTPAuth = true; //启用smtp认证
$mail->Username = "993440512@qq.com"; //你的邮箱名
$mail->Password = "XXXXXX" ; //邮箱授权码,注意是授权码,不是登录密码
$mail->From = "993440512@qq.com"; //发件人地址(也就是你的邮箱地址)
$mail->FromName = "冯战魁"; //发件人姓名
$mail->AddAddress($to); //收件人地址
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(true); // 是否HTML格式邮件
$mail->CharSet="utf-8"; //设置邮件编码
$mail->Subject =$subject; //邮件主题
$mail->Body = $content; //邮件内容
if($mail->Send()){
echo "success";
}else{
echo $mail->ErrorInfo;//打印错误信息
}
}
4、之所以SMTP connect() failed是因为之前邮件配置支持非ssl的协议,可以配置25端口,但是不知道从何时开始,大部分邮件配置仅支持ssl协议了,端口号一般是465,这个bug也是我费了好长时间才debug出来,主要归功于官方提供的$mail->SMTPDebug = 2,这个调试参数,让我找到了问题所在。
5、以qq邮箱为例说明
配置邮件服务器和端口号的地址:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369
这个找到之后,最重要的一点是Password这个参数,这个参数之前是账号的登录密码,现在已经改成授权码了,具体获取方式:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=10012566、到此结束,就可以愉快的发邮件了

相关文章
相关标签/搜索