PHPMailer 是一个强大的 PHP 编写的邮件发送类,使用它可以更加便捷的发送邮件,并且还能发送附件和 HTML 格式的邮件,同时还能使用 SMTP 服务器来发送邮件。
=
大家也许会问,PHP 不是已经内置了 mail() 函数了吗,为什么要用 PHPMailer 呢?mail() 函数功能并不完善,只能发送文本的 email,并且 mail() 函数只能应用在 Linux 服务器(很多装在 Win 主机的 WP 博客用户注册收不到邮件也是这个原因),还有一个最大的问题就是使用 mail() 函数发送的邮件没有进行身份验证,很多邮件收不到使用 mail() 函数发送的邮件或者发送的邮件直接进入垃圾邮箱。
PHPMailer 主要功能
- 在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。
- 平台应用广泛,支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。
- 支持嵌入图像,附件,HTML 邮件。
- 可靠的强大的调试功能。
- 支持 SMTP 认证。
- 自定义邮件头。
- 支持 8bit、base64、binary 和 quoted-printable 编码
PHPMailer 的简单使用
这里使用最常用的 Gmail 来做介绍。请到这里查看其他常用邮箱的 SMTP 地址和端口。
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"; // SMTP 安全协议 $mail->Host = "smtp.gmail.com"; // SMTP 服务器 $mail->Port = 465; // SMTP服务器的端口号 $mail->Username = "[email protected]";// SMTP服务器用户名 $mail->Password = "your_password"; // SMTP服务器密码 $mail->SetFrom('发件人地址', '发件人名称'); // 设置发件人地址和名称 $mail->AddReplyTo("邮件回复人地址","邮件回复人名称"); // 设置邮件回复人地址和名称 $mail->Subject = ''; // 设置邮件标题 $mail->AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端"; // 可选项,向下兼容考虑 $mail->MsgHTML(''); // 设置邮件内容 $mail->AddAddress('收件人地址', "收件人名称"); //$mail->AddAttachment("images/phpmailer.gif"); // 附件 if(!$mail->Send()) { echo "发送失败:" . $mail->ErrorInfo; } else { echo "恭喜,邮件发送成功!"; }
下载:PHPMailer,如果是 WordPress 用户,则无需下载,WordPress 已经自带 PHPMailer。
PHPMailer的使用(这里以用gmail smtp发送邮件为例,当然也支持sendmail/pop3 等其他方式):
- 首先到http://phpmailer.worxware.com/ 下载最新版本的程序包
- 下载完成后,找到class.phpmailer.php 、class.smtp.php两个类放到自己的目录下!
- 然后新建一个php文件这里命名为:phpmail_jiucool.php
- phpmail_jiucool.php内容如下:
我直接将邮件发送模块写成一个函数sendMail(),大家使用的时候直接调用该函数即可,函数内容为:
<?php function sendMail($to,$subject = "",$body = ""){ //$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文 //error_reporting(E_ALL); error_reporting(E_STRICT); date_default_timezone_set("Asia/Shanghai");//设定时区东八区 require_once('class.phpmailer.php'); include("class.smtp.php"); $mail = new PHPMailer(); //new一个PHPMailer对象出来 $body = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤 $mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 $mail->IsSMTP(); // 设定使用SMTP服务 $mail->SMTPDebug = 1; // 启用SMTP调试功能 // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // 启用 SMTP 验证功能 $mail->SMTPSecure = "ssl"; // 安全协议 $mail->Host = "smtp.googlemail.com"; // SMTP 服务器 $mail->Port = 465; // SMTP服务器的端口号 $mail->Username = "SMTP服务器用户名"; // SMTP服务器用户名 $mail->Password = "SMTP服务器密码"; // SMTP服务器密码 $mail->SetFrom('发件人地址,如admin#ixyzero.com #换成@', '发件人名称'); $mail->AddReplyTo("邮件回复地址,如admin#ixyzero.com #换成@","邮件回复人的名称"); $mail->Subject = $subject; $mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From http://ixyzero.com"; // optional, comment out and test $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address, "收件人名称"); //$mail->AddAttachment("images/phpmailer.gif"); // attachment //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!恭喜,邮件发送成功!"; } }
《“使用 PHPMailer 发送邮件[bak]”》 有 1 条评论
PHPMailer < 5.2.18 Remote Code Execution(CVE-2016-10033)
https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html
https://github.com/opsxcq/exploit-CVE-2016-10033