前阵子刚刚买了个阿里云服务器,在做发送邮件功能时,发现本来在本地测试没问题的功能,在服务器上连接超时。
后来发现是阿里云将25端口禁用了(“坑!当然也有其道理”),大概2016年9月后买的服务器都被禁用。25禁用了,我们就不用它。以163邮箱为例:
网易163免费邮箱相关服务器信息:
我这里用的就是SSL协议端口465,代码如下
<?php
header("content-type:text/html;charset=utf-8");
include("/PHPMailer/class.phpmailer.php");
include("/PHPMailer/class.smtp.php");
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->CharSet='UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码
$mail->SMTPAuth = true; //开启认证
$mail->SMTPSecure = 'ssl';//设置使用ssl加密方式登录鉴权
$mail->Port = 465;
$mail->Host = "smtp.163.com";
$mail->Username = "邮箱名";
$mail->Password = "授权码";
//$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示
$mail->AddReplyTo("邮箱名","mckee");//回复地址
$mail->From = "邮箱名";
$mail->FromName = "www.phpddt.com";
$to = "收件人";
$mail->AddAddress($to);
$mail->Subject = "本测试标题";
$mail->Body = "<h1>phpmail演示</h1>这是php点点通(<font color=red>www.phpddt.com</font>)对phpmailer的测试内容";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; //当邮件不支持html时备用显示,可以省略
$mail->WordWrap = 80; // 设置每行字符串的长度
//$mail->AddAttachment("f:/test.png"); //可以添加附件
$mail->IsHTML(true);
if(!$mail->Send())
{
echo "邮件发送有误 <p>";
echo "邮件错误信息: " . $mail->ErrorInfo;
exit;
}
else {
echo "邮件发送成功!<br />";
}
?>
其实也就在配置里加了
$mail->SMTPSecure = 'ssl';//设置使用ssl加密方式登录鉴权
$mail->Port = 465;
由于本人小菜鸡,花了好长时间才搞好,所以记一笔。希望对遇到阿里云服务器发邮件问题的朋友能有帮助.