温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SMTP connect() failed解决方案

发布时间:2020-07-05 10:15:02 来源:网络 阅读:17252 作者:无心低语 栏目:软件技术

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=1001256
6、到此结束,就可以愉快的发邮件了

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI