PHPMailer 发送邮件(含详细介绍及使用方法说明)

上篇文章PHP mail()方法发送邮件部分邮箱无法收到邮件问题提到要介绍一下phpmailer这款免费开源的php 邮件程序,下面我们来看看吧,以下资料全部来自phpmailer官方网站

PHPMailer 也是一个功能强大的邮件类

PHPMailer的主要功能特点:

  1. 支持邮件 s/mime加密的数字签名
  2. 支持邮件多个 TOs, CCs, BCCs and REPLY-TOs
  3. 可以工作在任何服务器平台,所以不用担心WIN平台无法发送邮件的问题的
  4. 支持文本/HTML格式邮件
  5. 可以嵌入image图像
  6. 对于邮件客户端不支持HTML阅读的进行支持
  7. 功能强大的发送邮件调试功能debug
  8. 自定义邮件header
  9. 冗余SMTP服务器支持
  10. 支持8bit, base64, binary, and quoted-printable 编码
  11. 文字自动换行
  12. 支持多附件发送功能
  13. 支持SMTP服务器验证功能
  14. Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台测试成功
  15. 提供的下载文件中,包括内容详细的说明文档及示例说明,所以不用担心难于上手的问题!
  16. PHPMailer 非常小巧、简单、方便、快捷

以上资料由Jiucool 翻译自phpmailer 官网,转载请注明!

PHPMailer的使用(这里以使用gmail smtp发送邮件为例,当然也支持sendmail  pop 等其他方式):

  1. 首先到http://phpmailer.worxware.com/ 下载最新版本的程序包
  2. 下载完成后,找到class.phpmailer.php 、class.smtp.php两个类放到自己的目录下!
  3. 然后新建一个php文件这里命名为:phpmail_jiucool.php
  4. phpmail_jiucool.php内容如下:

我直接将邮件发送模块写成一个函数postmail_jiucool_com(),大家使用的时候直接调用该函数即可,函数内容为:

function postmail_jiucool_com($to,$subject = "",$body = ""){
    //Author:Jiucool WebSite: http://www.jiucool.org 
    //$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#jiucool.org #换成@', '发件人名称');
    $mail->AddReplyTo("邮件回复地址,如admin#jiucool.org #换成@","邮件回复人的名称");
    $mail->Subject    = $subject;
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer! - From www.jiucool.org"; // 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!恭喜,邮件发送成功!";
        }
    }

当然还有更多、更详细的配置方式,大家可以自由发挥!

47 Responses to “PHPMailer 发送邮件(含详细介绍及使用方法说明)”

  1. 古韵流殇 says:

    如果 我的发送地址 是一个数组 怎么配置啊

  2. yj says:

    Could not access file: Could not instantiate mail function. Mailer Error: Could not instantiate mail function.

    请问这个错误怎么解决??

  3. han says:

    我提示发送成功,但是没收到mail 神马情况

  4. freenow says:

    发邮件时,出现,这个是啥问题,用的是你这个函数,QQ企业邮箱

    刚开始一直出现错误,无法链接stmp服务器,然后将class.phpmailer.php文件做了如下的修改:

    function IsSMTP() {
    $this->Mailer = ‘smtp’;
    }
    改成:

    function IsSMTP() {
    $this->Mailer = ‘SMTP’;
    }

    修改好后, stmp服务器是连接上,接着就出现下面的错误提示。
    Mailer Error: Could not instantiate mail function.

    请教,这个是啥问题?

  5. sixpoint says:

    我用phpmailer 5.1 版本时,遇到下面的问题,不知道大家有没有思路?
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = “ssl”;
    $mail->Host = “smtp.gmail.com”;
    $mail->Port = 465;
    $mail->Username = “lexo.charles@gmail.com”;
    $mail->Password = “*****”;

    就是我像上面打开了 smtp 认证 SMTPAuth = true; ,然后填写信息,发现并不会进行认证,即便我随便填写错误的 host username password 变量也可以不用验证,直接发送邮件。

    是不是我的理解有问题,就是即便打开了认证也不需要正确的 host username password 就可以发送邮件?

    还有就是 163,qq 等邮箱收到邮件后,会显示由我的服务器代发:
    发件人:cscanada; (由 ****@*****.net 代发)

    是不是验证过的就不会显示了?因为我用 foxmail smtp 发就不会显示。

  6. 灰太狼 says:

    酷哥这个类怎么调用的啊! 🙄

  7. hong says:

    🙂 这个类太帅了 ~ 拿来玩 ~

  8. KEITH says:

    我是新手,請教一下這個 “SMTP服务器用户名”應該是填什麽?還有“SMTP服务器密码”?

  9. Avery says:

    久酷,

    用Gmail可以使用。

    但是当我使用smtp.163.com代替gmail,更改了这些:

    $mail->Host = “smtp.163.com”; // SMTP 服务器
    $mail->Port = 465; // SMTP服务器的端口号
    $mail->Username = “SMTP服务器用户名”; // SMTP服务器用户名
    $mail->Password = “SMTP服务器密码”; // SMTP服务器密码

    结果不行。

    SMTP -> ERROR: MAIL not accepted from server: 553 You are not authorized to send mail, authentication is required
    The following From address failed: ivnt@iganjue.com Mailer Error: The following From address failed: ivnt@iganjue.com
    SMTP server error: You are not authorized to send mail, authentication is required

    大概什么原因,如何解决?谢谢。

Leave a Reply


正在读取数据……