资讯专栏INFORMATION COLUMN

使用phpmailer发送邮件

WelliJhon / 1277人阅读

摘要:最近做邮件发送的时候尝试了一下,但是在用的过程中还是遇到一些问题,在这里记一下。在做常规测试的时候,发现邮件发送特别慢。默认设置是什么也不处理在邮件发送中需要添加抄送人。

最近做邮件发送的时候尝试了一下phpmailer,但是在用的过程中还是遇到一些问题,在这里记一下。做的过程中主要遇到这几个问题。
1.在做常规测试的时候,发现邮件发送特别慢。这里主要找到是这句造成的:

$this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context );

遇到这个问题,需要将$SMTPDebug设置成2。默认设置是0什么也不处理;

2.在邮件发送中需要添加抄送人。可以这么设置:

if(is_string($addCC)){
    $mail->addCC("xxx@qq.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址
}else if(is_array($addCC)){
    foreach ($addCC as $k=>$v){
        $mail->addCC($v);
    }
}

3.添加附件

if($is_attachment){
    $mail->AddAttachment($attachment_add); //可以添加附件
}

4.新版有时候还会报

MAIL FROM command failed: 501 mail from address must be same as authorization user
这个错误;这里主要是没有设置来源:$mail->setFrom("xxx@qq.com", "测试");

5.有时需要添加抄送功能,可以这么设置。数组的时候是批量添加抄送,字符串是单个抄送。

if(is_string($addCC)){
    $mail->addCC("wangqian@jiguo.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址
}else if(is_array($addCC)){
    foreach ($addCC as $k=>$v){
        $mail->addCC($v);
    }
}

最后附上一个简单的实现函数

/**
 * $username 用户名
 * $password 密码
 * $setFromusername 发送人姓名
 * $send_mail 需要发送的邮件地址
 * $addCC 需要抄送的邮件地址
 * $title 邮件标题
 * $content 邮件内容
 * $is_attachment 是都需要附件
 * $attachment_add 附件地址
*/

function send($username, $password, $setFromusername,$send_mail, $addCC,$title,$content="",$is_attachment=0, $attachment_add=""){
    $mail = new PHPMailer();
    if(is_string($send_mail)){
        $send_mail[] = $send_mail;
    }

    foreach ($send_mail as $k=>$v){
        $mail->IsSMTP();
        $mail->CharSet  ="UTF-8"; //设置邮件的字符编码,这很重要,不然中文乱码
        $mail->SMTPAuth = true; //开启认证
        $mail->Port     = 465;
        $mail->Host     = "smtp.exmail.qq.com";
        $mail->Username = $username;
        $mail->Password = $password;
        $mail->SMTPSecure = "ssl";
        $mail->setFrom($username, $setFromusername);

        $to = $v;
        $mail->AddAddress($to);
        if(is_string($addCC)){
            $mail->addCC($addCC);// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址
        }else if(is_array($addCC)){
            foreach ($addCC as $k=>$v){
                $mail->addCC($v);
            }
        }

        $mail->Subject  = $title;
        $mail->Body     = $content ? $content : $title;
        $mail->AltBody  = $content ? $content : $title;; //当邮件不支持html时备用显示,可以省略
        $mail->WordWrap = 80; // 设置每行字符串的长度
        if($is_attachment){
            $mail->AddAttachment($attachment_add); //可以添加附件
        }

        $mail->IsHTML(true);
        $mail->Send();
    }

    echo "邮件已发送";
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30685.html

相关文章

  • phpmailer实现Thunderbird话题跟踪(Threads)邮件发送

    摘要:业务需求需要开发发送邮件的功能一工具介绍二工作原理上司只提及一个关键词对应的中文是话题他也不知道这个是怎么实现的我用邮箱做了测试发现邮箱是使用标题作为话题跟踪的线索所以用原有的方法发送一封邮件也可以实现话题跟踪的功能这个与我的目标不符后来在 业务需求,需要开发发送Threads邮件的功能 一、工具介绍 php5 PHPMailer 5.2.25 二、工作原理 上司只提及一个关键词:...

    Lemon_95 评论0 收藏0
  • tp3.2使用QQ邮箱或163邮箱通过PHPMailer发送邮件

    摘要:我之前一直使用邮箱发送需要处理的文件,但是如果操作过于频繁或者有别的问题,会导致发送失败,相反现在用的貌似还没出现过类似情况,不过邮箱配置和有一丢丢不一样,我还是贴一下,怕朋友们踩到坑建议大家用邮箱,建议大家用邮箱,建议大家用邮箱重要的事情 我之前一直使用163邮箱发送需要处理的文件,但是如果操作过于频繁【或者有别的问题】,会导致发送失败,相反现在用QQ的貌似还没出现过类似情况,不过Q...

    Harpsichord1207 评论0 收藏0
  • php 发送邮件(使用QQ邮箱)

    摘要:一,设置邮箱二,下载文件夹三,将文件夹放在网站根目录,或其他可引入的目录四,代码引入的核心文件实例化核心类是否启用的进行调试开发环境建议开启生产环境注释掉即可默认关闭调试模式使用鉴权方式发送邮件需要鉴权这个必须是链接域名邮箱的服务器地 一,设置qq邮箱 showImg(https://segmentfault.com/img/bVVugy?w=822&h=187); showImg(h...

    mmy123456 评论0 收藏0
  • phpmailer发送邮件 SMTP Error: Could not authenticate 错

    摘要:今天在使用发送邮件时提示错误,其中密码帐号都是正确的,邮箱也设置开启了功能。方法使用函数一般被禁,也有可能被禁,所以这里介绍另一个函数。的参数与有所不同,所以代码要修改为代码如下复制代码这样就可以了。 今天在使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误,其中密码帐号都是正确的,邮箱也设置开启了SMTP功能。 上...

    jiekechoo 评论0 收藏0

发表评论

0条评论

WelliJhon

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<