zoukankan      html  css  js  c++  java
  • 20150322 利用phpmailer来发送邮件

    20150322 利用phpmailer来发送邮件

    2015-03-22 Lover雪儿

        最近事务繁杂,导致php学习落下了一段时间,记得好久以前学了在doc命令窗口利用smtp来发送邮件,http://www.cnblogs.com/lihaiyan/p/4319853.html ,此处,我们来利用一个强大的PHP类phpmailer来实现邮件的发送。

    一、关于PHPMailer

        phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,并且使用起来非常方便

    对于相关的知识,昆明多彩科技写的很好http://www.kmwzjs.co如下所示

    使用前需要一个初始化对象如:$mail = new PHPMailer();

    1.phpmailer属性表

    属性 (v5.0.0)

    类型

    默认

    描述

    $Priority

    public

    3

    优先级别(1 = 高, 3 = 中, 5 = 低)

    $CharSet

    public

    iso-8859-1

    字符集信息

    $ContentType

    public

    text/plain

    内容的消息类型

    $Encoding

    public

    8bit

    消息的Encoding,设置有: "8bit", "7bit", "binary", "base64", "quoted-printable".

    $ErrorInfo

    public

     

    邮件发送错误信息.

    $From

    public

    root@localhost

    发件人地址.

    $FromName

    public

    Root User

    发件人姓名.

    $Sender

    public

     

    发件人的返回路径信息, If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.

    $Subject

    public

     

    邮件主题

    $Body

    public

     

    邮件正文,可以使用HTML/text,如果是HTML,会设置IsHTML为true.

    $AltBody

    public

     

    纯文本正文,不支持HTML的备用显示

    $WordWrap

    public

    0

    达到一定数目自动换行.

    $Mailer

    public

    mail

    发送邮件的方法: ("mail", "sendmail", or "smtp").

    $Sendmail

    public

    /usr/sbin/sendmail

    sendmail的路径.

    $PluginDir

    public

     

    PHPMailer插件路径,这是在不同的路径下的PHP include唯一有用的SMTP类Path to PHPMailer plugins. This is now only useful if the SMTP class is in a different directory than the PHP include path.

    $ConfirmReadingTo

    public

     

    回执信息,值为需要接收回执信息的邮箱地址.

    $Hostname

    public

     

    设置主机使用邮件ID和接收头和直升机作为默认字符串.如果为空,由服务器名返回的值是使用或'localhost.localdomain'.

    $Host

    public

    localhost

    SMTP主机,所有主机必须;隔开.可以同时设置多个主机,格式:"smtp1.example.com:25;smtp2.example.com".发送邮件时按照队列尝试.

    $Port

    public

    25

    SMTP主机端口

    $Helo

    public

     

    设置SMTP信息 (默认是$Hostname).

    $SMTPAuth

    public

    false

    SMTP服务器是否需要认证,使用了用户名和密码变量.

    $Username

    public

     

    设置 SMTP 用户名.

    $Password

    public

     

    设置 SMTP 密码.

    $Timeout

    public

    10

    设置SMTP服务延迟时间.这个功能在win32平台不能用.

    $SMTPDebug

    public

    false

    开启SMTP类调试.

    $SMTPKeepAlive

    public

    false

    保持连接,关闭则是SmtpClose().

    $Version

    public

     

    返回PHPMailer版本号

    $SingleTo

    public

    false

    Provides the ability to have the TO field process individual emails, instead of sending to entire TO addresses

    2.phpmailer方法表

    方法 (v5.0.0)

    类型

    默认

    描述

    set($name, $value)

    string $name
    string $value

      

    为用户能够创建自己的自定义伪属性.
    例子:
    $mail->set('X-MSMail-Priority', 'Normal');

    addCustomHeader($value)

    string $value

      

    创建自定义页头 . 
    例子:
    $mail->addCustomHeader("X-Priority: 3");

    MsgHTML($message)

      

      

    使用HTML发送.比如可以定义一些html代码:昆明网站建设

    IsMail()

    boolean

    true

    设置phpMailer是否使用mail()函数.(true, false or blank)

    IsSMTP()

    boolean

      

    设置phpMailer是否使用 SMTP. 如果设置了该项,其他相关项也需要设置.(true, false or blank)

    IsSendmail()

    boolean

      

    设置phpMailer是否使用Sendmail().(true, false or blank)

    IsQmail()

    boolean

      

    设置phpMailer是否使用Sendmail() MTA. (true, false or blank)

    SetFrom($address, $name = "")

    string $address
    string $name

      

    增加一个邮件发件人地址.

    AddAddress($address, $name = "")

    string $address
    string $name

      

    增加一个收件人地址(邮件目的地址).

    AddCC($address, $name = "")

    string $address
    string $name

      

    增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台.

    AddBCC($address, $name = "")

    string $address
    string $name

      

    增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台.

    AddReplyTo($address, $name = "")

    string $address
    string $name

      

    增加一个回复地址(别人回复时的地址).

    Send()

      

      

    创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true.

    AddAttachment($path, $name = "", $encoding = "base64",
        $type = "application/octet-stream")

    string $path
    string $name
    string $encoding
    string $type

      

    添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型

    AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
        $type = "application/octet-stream")

    string $path
    string $cid
    string $name
    string $encoding
    string $type

      

    增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法.

    ClearAddresses()

      

      

    清除所有收件人地址,返回无效.

    ClearCCs()

      

      

    清除所有抄送地址,返回无效.

    ClearBCCs()

      

      

    清除所有密送地址,返回无效.

    ClearReplyTos()

      

      

    清除所有回复地址,返回无效.

    ClearAllRecipients()

      

      

    清除所有收件人/草送/密送地址,返回无效.

    ClearAttachments()

      

      

    清除所有设置的文件/字符串/二进制附件,返回无效.

    ClearCustomHeaders()

      

      

    清除所有设置的页头,返回无效.

    Send()

      

      

    发送邮件

    SetLanguage($lang, $langpath)

    string $lang
    string $langpath

      

    设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

    方法 (v5.0.0)

    类型

    默认

    描述

    set($name, $value)

    string $name
    string $value

      

    为用户能够创建自己的自定义伪属性.
    例子:
    $mail->set('X-MSMail-Priority', 'Normal');

    addCustomHeader($value)

    string $value

      

    创建自定义页头 . 
    例子:
    $mail->addCustomHeader("X-Priority: 3");

    MsgHTML($message)

      

      

    使用HTML发送.比如可以定义一些html代码:昆明网站建设

    IsMail()

    boolean

    true

    设置phpMailer是否使用mail()函数.(true, false or blank)

    IsSMTP()

    boolean

      

    设置phpMailer是否使用 SMTP. 如果设置了该项,其他相关项也需要设置.(true, false or blank)

    IsSendmail()

    boolean

      

    设置phpMailer是否使用Sendmail().(true, false or blank)

    IsQmail()

    boolean

      

    设置phpMailer是否使用Sendmail() MTA. (true, false or blank)

    SetFrom($address, $name = "")

    string $address
    string $name

      

    增加一个邮件发件人地址.

    AddAddress($address, $name = "")

    string $address
    string $name

      

    增加一个收件人地址(邮件目的地址).

    AddCC($address, $name = "")

    string $address
    string $name

      

    增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台.

    AddBCC($address, $name = "")

    string $address
    string $name

      

    增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台.

    AddReplyTo($address, $name = "")

    string $address
    string $name

      

    增加一个回复地址(别人回复时的地址).

    Send()

      

      

    创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true.

    AddAttachment($path, $name = "", $encoding = "base64",$type=

    "application/octet-stream")

    string $path
    string $name
    string $encoding
    string $type

      

    添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型

    AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
        $type = "application/octet-stream")

    string $path
    string $cid
    string $name
    string $encoding
    string $type

      

    增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法.

    ClearAddresses()

      

      

    清除所有收件人地址,返回无效.

    ClearCCs()

      

      

    清除所有抄送地址,返回无效.

    ClearBCCs()

      

      

    清除所有密送地址,返回无效.

    ClearReplyTos()

      

      

    清除所有回复地址,返回无效.

    ClearAllRecipients()

      

      

    清除所有收件人/草送/密送地址,返回无效.

    ClearAttachments()

      

      

    清除所有设置的文件/字符串/二进制附件,返回无效.

    ClearCustomHeaders()

      

      

    清除所有设置的页头,返回无效.

    Send()

      

      

    发送邮件

    SetLanguage($lang, $langpath)

    string $lang
    string $langpath

      

    设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

    ClearAttachments()

      

      

    清除所有设置的文件/字符串/二进制附件,返回无效.

    ClearCustomHeaders()

      

      

    清除所有设置的页头,返回无效.

    Send()

      

      

    发送邮件

    SetLanguage($lang, $langpath)

    string $lang
    string $langpath

      

    设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

    ClearAttachments()

      

      

    清除所有设置的文件/字符串/二进制附件,返回无效.

    ClearCustomHeaders()

      

      

    清除所有设置的页头,返回无效.

    Send()

      

      

    发送邮件

    SetLanguage($lang, $langpath)

    string $lang
    string $langpath

      

    设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

     

     

    二、PHPMailer邮件发送

    1.引入phpmailer类,并且实例化

    2.邮件的设置

    3.收件人,抄送,回复地址设置

    4.开始正式写信

     

    5.还可以AddAttachment()添加本地附件

    6.最后使用send()函数正式发送

     

    7.测试结果如下

    发送邮件:

     

    接着,163与qq邮箱依次收到邮件

     

    邮件正文如下:

     

    注意:关于邮件内容乱码问题

    由于个人电脑上文本编辑器的编码格式不一样,有的人使用GB2312,gbk,UTF-8所以,所示在邮件正文出现乱码,只需要修改如下一行为相应的编码格式即可:

    $phpmailer->CharSet = "UTF-8";        //设置字符集

    乱码图片如下图所示:

     

     

    附源码:

    <?php
    /* 用PHPMailer类来发信
     * 步骤:
     * 0: 引入
     * 1: 实例化
     * 2: 配置属性
     * 3: 调用发送
     * */
    require('./PHPMailer_v5.1/class.phpmailer.php');
    
    $phpmailer = new PHPMailer();
    /*设置PHPMAILER发信用的方式
     * 可以用win下的mail()来发送
     * 可以用linux下sengmail ,gmail来发送
     * 可以用smtp协议登录到某个账户上来发送
     * */
    $phpmailer->IsSMTP();
    $phpmailer->Host = 'smtp.163.com';    //设置smtp服务器
    $phpmailer->SMTPAuth = true;        //SMTP服务器是否需要认证,要登录
    $phpmailer->Port = 25;                //smtp端口
    $phpmailer->Username = "xxx";  //smtp服务器账号  xxx@163.com  中的xxx
    $phpmailer->Password = "xxxx";          //smtp服务器密码
    
    //添加收件人
    $phpmailer->AddAddress("lihaiyan1063385677@163.com", "myself");
    //添加一个抄送
    $phpmailer->AddCC("1063385677@qq.com","lover雪儿");
    //增加一个回复属性
    $phpmailer->AddReplyTo("1063385677@qq.com","雪");
    
    //信息设置完毕
    //开始正式写信
    $phpmailer->CharSet = "UTF-8";        //设置字符集
    $phpmailer->From = "lihaiyan1063385677@163.com";    //来自
    $phpmailer->FromName = "lihaiyan1063385677";        //姓名
    $phpmailer->Subject = "test from php mailer";    //主题
    //开始正式写邮件内容
    $phpmailer->Body = "this is the test mail for phpmailer!!!
    这是一封测试邮件";    
    
    //添加本地附件
    $phpmailer->AddAttachment("./sanyecao.jpg","四叶草.jpg");
    
    //发信
    echo $phpmailer->send() ? "ok":"fail";
    
    ?>
  • 相关阅读:
    我决定潜心研究技术了...
    new proxy
    谷歌插件开发
    js计算不准确 解决方案
    netty中如何切包
    Spring Boot的ComponentScan原理
    解决org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character '@'
    深入理解js立即执行函数
    winform 将子窗体显示在父窗体的TabControl控件上
    js隐藏网页元素
  • 原文地址:https://www.cnblogs.com/lihaiyan/p/4356704.html
Copyright © 2011-2022 走看看