1. 关于PHPMailer

PHP用来操作发送邮件的类库。

Github地址:https://github.com/PHPMailer/PHPMailer

2. 使用

2.1下载

首先下载类库包,直接Github下载或者通过composer都可以

2.2 使用

直接引入PHPMailerAutoload.php文件:

require '/path/to/PHPMailerAutoload.php';

然后实例化 PHPMailer() 类执行操作即可。

2.3 使用示例

官方简单示例:

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // 是否输出debug信息

$mail->isSMTP();                                      // 设置mailer为SMTP模式
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // SMTP服务器host
$mail->SMTPAuth = true;                               // 启用SMTP身份验证
$mail->Username = 'user@example.com';                 // SMTP用户名
$mail->Password = 'secret';                           // SMTP密码
$mail->SMTPSecure = 'tls';                            // 是否使用 TLS 证书,支持'ssl'
$mail->Port = 587;                                    // TCP连接端口

$mail->setFrom('from@example.com', 'Mailer');         // 设置发件人地址
$mail->addAddress('joe@example.net', 'Joe User');     // 添加收件人地址
$mail->addAddress('ellen@example.com');               // 添加收件人时名称是可选的
$mail->addReplyTo('info@example.com', 'Information'); // 回复地址
$mail->addCC('cc@example.com');                       // 添加抄送地址
$mail->addBCC('bcc@example.com');                     // 添加密件抄送地址

$mail->addAttachment('/var/tmp/file.tar.gz');         // 添加附件
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // 添加带有名称的附件
$mail->isHTML(true);                                  // 发送HTML格式的邮件

$mail->Subject = 'Here is the subject';               // 邮件标题
$mail->Body    = 'This is the HTML message body <b>in bold!</b>'; // 邮件主体内容
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; //附加信息

/* 执行发送邮件 */
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

3. 提取文件

3.1 提取?

在有些时候,我们只需要用到一个简单发送邮件功能来实现一些简单的功能,或者测试某些功能,我们可以进行一个瘦身操作;这步看个人其实可以忽略。

3.2 操作

我们可以提取出PHPmailer包中的class.phpmailer.php,class.pop3.php,class.smtp.php三个文件备用(实际使用smtp发送只引入了class.smtp);

同样直接引入class.phpmailer.php就可以使用发送邮件功能。

3.3 简单示例

<?php
require  '/path/to/class.phpmailer.php';
try {
    $mail = new PHPMailer(true);
    $mail->IsSMTP();
    $mail->CharSet='UTF-8';
    $mail->SMTPAuth = true;
    $emailPort = '';
    if ($emailPort == '465'){       // 如果使用ssl则加上
        $mail->SMTPSecure = 'ssl';
    }
    $mail->Port = $emailPort;
    $mail->Host = '';               // 邮箱smtp地址
    $mail->Username = '';           // 你的邮箱账号
    $mail->Password = '';           // 你的邮箱密码
    $mail->From = $mail->Username;  // 你的邮箱账号(发件人)
    $mail->FromName = '';           // 发件人名称

    $mail->AddAddress('');          // 收件人
    $mail->Subject = $subject;      // 标题
    $mail->Body = $message;         // 邮件内容
    $mail->WordWrap = 80;           // 设置长度
    //$mail->AddAttachment("f:/test.png"); //可以添加附件
    $mail->IsHTML(true);                   //是否HTML格式
    $mail->Send();                  //执行发送
} catch (phpmailerException $e) {
    // echo "邮件发送失败:".$e->errorMessage(); //测试的时候可以去掉此行的注释
}

4. 提示

PHPMailer偶尔会爆出安全性漏洞,最好保持PHPmailer时常更新,更新的安全版本状态。

5. 可能的错误

5.1 SMTP ERROR: Cound not connect to SMTP host.

连接不到SMTP服务器,首先检查SMTP服务器是否可用,比如该邮箱提供商是否支持,如果支持看看smtp是否解析;再检查用来发送邮件的端口是否被占用;以及是否发送方式出错,例如使用了ssl方式却没有配置好环境。