最近给客户做了个网站,用到了php的mail发邮件方法,在本机上测试一切正常,但上传到阿里云上居然收不到邮件,百度后才知道原来阿里云部分服务器的25端口默认封闭,没办法只好去找其他方法,阿里云提示需要使用SSL加密端口(通常是465)来对外发信。
从官网上下载Demo配置好上传上去经过测试的确可以正常收到邮件,不过不是用的mail方法,而是phpmailer方法,经过搜索发现这个方法确实很方便强大,现在共享出来与大家一起分享,最后把phpmailer方法的基本配置说明一下。
Demo下载
<?php
require 'PHPMailerAutoload.php';
require_once('class.phpmailer.php');
require_once("class.smtp.php");
$mail = new PHPMailer();
$mail->CharSet ="UTF-8"; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置为 UTF-8
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = "ssl"; // 启用SSL
$mail->SMTPDebug = true; // 设置是否输出SMTP调试信息
$mail->Host = "smtp.xxx.com"; // SMTP 服务器
$mail->Port = 465; // SMTP服务器的端口号
$mail->Username = "xxx@xxx.com"; // SMTP服务器用户名
$mail->Password = "xxx"; // SMTP服务器密码
$mail->SetFrom('xxx@xxx.com', 'qq'); // 设置发件人地址和名称
$mail->AddReplyTo("xxx@xxx.com","xxx@xxx.com");
// 设置邮件回复人地址和名称
$mail->Subject = 'xxx'; // 设置邮件标题
$mail->AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端";
// 可选项,向下兼容考虑
$mail->MsgHTML('<html>helo</html>'); // 设置邮件内容
$mail->AddAddress('xxx@xxx.com', "xxx@xxx.com");
//$mail->AddAttachment("images/phpmailer.gif"); // 附件
if(!$mail->Send()) {
echo "发送失败:" . $mail->ErrorInfo;
} else {
echo "恭喜,邮件发送成功!";
}
?>