51可用代码模板网站

咨询热线:

181-1164-6936
  • 1
PHP代码
当前位置:首页>实用代码>PHP代码>

封装PHP mail函数发送HTML邮件并使用中文发件人且自定义发件人邮

时间:2017-08-14 13:31点击:
 在写PHP代码时,发送邮件着实是一件比较让人郁闷的事情,PHP默认提供的mail函数太弱了,很难琢磨清楚到底该怎么用。虽然也有很一些做得比较好得第三方库,可以提供相当强大的邮件功能,尤其是可以很简单的配置其使用gmail的stmp服务来发送邮件。但是使用这些库通过stmp来发送邮件就不能随意指定发件地址了,也没办法使用到默认mail函数所提供的调用立即返回,后台sendmail从等待列表中自动发送邮件的功能了。再加上有时就是为了写个小脚本,比如每天监控一下服务器状态,然后发送邮件报告的小功能,动用这种第三方库就有点杀鸡用牛刀了。通过不断的搜索+尝试,终于搞定了使用PHP默认mail函数发送邮件时让人模不着头脑的四大金刚:

    1.怎样发送HTML格式邮件
    2.主题给填上中文怎么是乱码啊!
    3.收件人中除了填上收件人的邮件,还要填上名字,而且还是中文的

    4.发件人要填上网站的名字,让人收到邮件的时候不是光秃秃的显示邮件地址,那太搓了,就像下面这张图



闲话不再说了,直接上代码,相信都能看懂的。



    // 对邮件地址进行中文的UTF-8编码转化  
    function format_mail_address($address){  
      if(preg_match("|<([^<]+)>|", $address, $matches)){  
        $name = mb_substr($address, 0, strpos($address, '<'));  
        $name = trim($name);  
        $mail = $matches[1];  
        $address = "=?UTF-8?B?".base64_encode($name)."?= " . "<$mail>";  
      }  
      return $address;  
    }  
      
    // 发送html格式的邮件  
    function html_mail($from, $to, $subject, $body){  
      if(preg_match("|<([^<]+)>|", $from, $matches)){  
        $from_name = mb_substr($from, 0, strpos($from, '<'));  
        $from_mail = $matches[1];  
        $from = "=?UTF-8?B?".base64_encode($from_name)."?= " . "<$from_mail>";  
      }else{  
        $from_mail = $from;  
      }  
      $headers[] = "From: $from";  
      $headers[] = "X-Mailer: PHP";  
      $headers[] = "MIME-Version: 1.0";  
      $headers[] = "Content-type: text/html; charset=utf8";  
      $headers[] = "Reply-To: $from_mail";  
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";  
      if(is_array($to)){  
        foreach($to as $mail)  
          $to_mails[] = format_mail_address($mail);  
        $to = join(", ", $to_mails);  
      }  
      mail($to, $subject, $body, join("\r\n", $headers), "-f $from_mail");  
    }  



函数使用可以参照下面的例子:


    html_mail(  
        "老谷自言自语 <admin@yorkgu.me>",  
        array(  
            "用户A <user1@gmail.com>",  
            "用户B <user2@163.com>"),  
        "这是一封测试邮件",  
        "<html><body><h1 style='color:red'>  
          51可用模板 期待 你的光临
        </h1></body></html>"  
    );

PHP mail函数调用sendmail发送邮件,请尽量在Linux系统中尝试以上代码

51可用模板(代码)网站专为广大站长朋友提供精品模板与代码,同时免费提供网站收录。
本站域名: WWW.51KYDM.COM    联系方式:QQ:182468923    手机:18111646936
本站关键词:网站链接收录网址收录入口网站免费提交收录网站收录提交入口    网站地图
51可用模板
展开