PHPMailer已经更新了很多版本了,新的版本没用过。本教程只针对老版本。
PHPMailer的获取:
PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer
现在的都是新版本,在历史版本中,找到v5.2.19版本。下载下来并解压。
步骤一:使我们的QQ邮箱能够发送邮件
这里怎么说能够发送邮件呢?其实我们的邮箱都是可以发送邮件的,但是要实现在我们的网站中发送邮件,那就要设置一下我们的QQ邮箱了,因为此时我们的网站现在是作为一个第三方客户端存在的。
- 由于待会我们用到的是SMTP服务器来发送,在这里建议把前面的两项开启了!当你点击开启的时候,它会提示:
当你完成以上步骤之后,就会得到一个授权码,你可以先复制出来,待会我们会用到(开启两项的话会得到两个授权码,用最后的那个授权码!或者点击下面的生成授权码来获取一个新的授权码,一定要最新的!)。
步骤二:使我们的PHP能够使用QQ邮箱发送邮件
PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式,固php还得openssl的支持,可以查看phpinfo,如下两项均存在则可以使用,其中openssl版本号之类不用管;许多虚拟主机中的php是不支持openssl扩展的,那你可能就悲剧了。
步骤三:将PHPMailer做一定的处理
由于我们下载下来的PHPMailer文件夹里边的文件有很多我们是用不上的,所以我们也没必要浪费这些内存。我们可以对这个文件夹瘦身,在这里我只保存了以下的两个文件:class.phpmailer.php、class.smtp.php。
步骤四:编写发送邮件代码
在这里我是直接封装了一个公共的方法(写在 sendmeil.php 文件中):
<?php
/*发送邮件方法
*@param $to:接收者 $title:标题 $content:邮件内容
*@return bool true:发送成功 false:发送失败
*/
function sendMail($to,$title,$content){
//引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
require('class.phpmailer.php');
require('class.smtp.php');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
//$mail->Host = "smtp.163.com"; //SMTP服务器 163邮箱例子
//$mail->Host = "smtp.126.com"; //SMTP服务器 126邮箱例子
$mail->Host = "smtp.qq.com"; //SMTP服务器 qq邮箱例子
$mail->Port = 465; //邮件发送端口
$mail->SMTPAuth = true; //启用SMTP认证
$mail->CharSet = "UTF-8"; //字符集
$mail->Encoding = "base64"; //编码方式
// 设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
$mail->Username = 'XXXXXX@qq.com'; // SMTP 发件人邮件地址
$mail->Password = 'XXXXXXXXX'; //邮箱授权码
$mail->Subject = $title; //邮件标题
$mail->From = "XXXXXXXX@qq.com"; //发件人地址(也就是你的邮箱)
$mail->FromName = "XX"; //发件人姓名
$mail->AddAddress($to, "xxx1"); //添加收件人1(地址,昵称)
//$mail->AddAddress($address2, "xxx2"); //添加收件人2(地址,昵称)
//$mail->AddAttachment('xx.xls','我的附件.xls'); // 添加附件,并指定名称
//$mail->AddAttachment('xx1.xls','我的附件1.xls'); // 可以添加多个附件
//$mail->AddAttachment('xx2.xls','我的附件2.xls'); // 可以添加多个附件
$mail->IsHTML(true); //支持html格式内容
//$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片
$mail->Body = $content; //邮件主体内容
$status = $mail->send();
//简单的判断与提示信息
if($status) {
return true;
}else{
return false;
}
}
?>
好了,现在我们在dome.php中调用该公共方法来测试一下,我要发送一篇邮件给 1234568@qq.com 通知。
<?php
require_once("PHPMailer/sendmeil.php");
$flag = sendMail('1234568@qq.com','通知','这是一封系统邮件!');
if($flag){
echo "发送邮件成功!";
}else{
echo "发送邮件失败!";
}
?>
本文项目结构
文章参考:PHP中利用PHPMailer配合QQ邮箱实现发邮件