PHP利用SMTP发送群发单显邮件并显示自定义发件名的代码

原创| 开发动态| 一个月前| 阅读 358 次 | 5赞同 12反对

概述:关于这个主题网络上的答案是千篇一律,并没有真正的解决PHP通过设置SMTP来发送群发邮件只显示个人邮箱的功能。

为了减少更多的开发者在这个上面浪费时间,今天板砖分享一下我的实施代码,虽然不是新发明发现,不过也是一种实操思路!

我的思路是:

  1. 通过传入的发送地址列表,判断是否是直接发送还是群发单显
  2. 通过修改sendmail方法中代码 $header .= "From: $from<".$from.">\r\n"; 实现自定义发件名

    $sendto = ""; //主要发送
    $cc = ""; //抄送
    $bcc = ""; //秘密抄送

    //***************判断发送的是1个人还是一群人,大于2人的时候就群发单显
    $list = explode(",", $to);
    if (count($list) > 1) {
        $sendto = $list[0];
        $bcc = str_replace($sendto . ",", "", $to);
    } else {
        $sendto = $to;
    }

    //******************** 配置信息 ********************************
    $smtpserver = $host; //SMTP服务器,ignore ssl is normal send type
    $smtpserverport = $port; //SMTP服务器端口 25,994 is ssl send
    $smtpusermail = $sendfrom; //SMTP服务器的用户邮箱
    $smtpemailto = $sendto; //发送给谁
    $smtpuser = $nick; //SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
    $smtppass = $password; //SMTP服务器的授权码
    $mailtitle = $subject; //邮件主题
    $mailcontent = $msg; //邮件内容
    $mailtype = "HTML"; //邮件格式(HTML/TXT),TXT为文本邮件

    //************************ 配置信息 ****************************
    $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //这里面的一个true是表示使用身份验证,否则不使用身份验证.
    $smtp->debug = false; //是否显示发送的调试信息
    $state = $smtp->sendmail($smtpemailto, $smtpusermail, $mailtitle, $mailcontent, $mailtype, $cc, $bcc);

    if ($state == "") {
        return false;
    }

    return true;



DMAKE

本频道需要登陆后才能评论,请登录


暂无评论...