首页 > 代码库 > html格式邮件垃圾率过高的处理办法

html格式邮件垃圾率过高的处理办法

 

原先的邮件采用Content-Type: text/html

下面是X-Spam的得分情况,当 score 超过6分就被当作垃圾邮件处理了

X-Spam-Status: Yes, score=6.3 required=6.0 tests=CONTENT_TYPE_PRESENT,    DIRECTUNKNOWN,HTML_MESSAGE,MIME_HTML_ONLY,ONLY1HOPDIRECT,RDNS_NONE,    TO_NO_BRKTS_FROM_MSSP,TO_NO_BRKTS_NORDNS_HTML,URIBL_BLOCKED,UTF8 autolearn=no    version=3.3.1X-Spam-Report:    *  0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked.    *       See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block    *      for more information.    *      [URIs: handbook.jp]    * -0.1 CONTENT_TYPE_PRESENT exists:Content-Type    *  0.3 DIRECTUNKNOWN directly received spam from suspicious dynamic IP    *  1.0 ONLY1HOPDIRECT ONLY1HOPDIRECT    *  1.0 HTML_MESSAGE BODY: HTML included in message    *  0.4 MIME_HTML_ONLY BODY: Message only has text/html MIME parts    * -0.1 UTF8 RAW: UTF-8 message body    *  1.3 RDNS_NONE Delivered to internal network by a host with no rDNS    *  2.5 TO_NO_BRKTS_FROM_MSSP Multiple formatting errors    *  0.0 TO_NO_BRKTS_NORDNS_HTML To: misformatted and no rDNS and HTML only

 

解决办法就是采用Content-Type: multipart/alternative

这种类型可以同时发送两种类型的邮件 text/plain 和 text/html, 大大降低邮件的 score

下面是采用multipart/alternative 这种类型的得分情况 因为低于6分 没有X-Spam-Report

X-Spam-Status: No, score=3.5 required=6.0 tests=CONTENT_TYPE_PRESENT,    DIRECTUNKNOWN,HTML_MESSAGE,MULTIPART_ALTERNATIVE,ONLY1HOPDIRECT,RDNS_NONE,    URIBL_BLOCKED,UTF8 autolearn=no version=3.3.1

 

下面是具体代码

function sendAlternativeMail($to, $from, $subject, $plainmessage, $htmlmessage, $bcc = null, $cc = null) {    $to   = base64($to);    $from = base64($from);    $subject = ‘=?UTF-8?B?‘ . base64_encode($subject) . ‘?=‘;    $boundary = uniqid(‘np‘);
   //set header
$headers = "MIME-Version: 1.0\r\n"; $headers .= "From: ".$from."\r\n"; $cc && $headers .= "Cc: $cc\n"; $bcc && $headers .= "Bcc: $bcc\n"; $headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";   //set plain body $message = "\r\n\r\n--" . $boundary . "\r\n"; $message .= "Content-type: text/plain;charset=utf-8\r\n\r\n"; $message .= $plainmessage;   //set html body $message .= "\r\n\r\n--" . $boundary . "\r\n"; $message .= "Content-type: text/html;charset=utf-8\r\n\r\n"; $message .= $htmlmessage; //end $message .= "\r\n\r\n--" . $boundary . "--"; return mail($to, $subject, $message, $headers);}
//encode email address
function base64($string){ if (!$string) { return null; } $array = explode(‘,‘, $string); foreach ($array as &$a) { $a = trim($a); if (preg_match(‘/(.*)(<[^>]+@[^>]+>)$/U‘, $a, $match)) { $a = ‘=?UTF-8?B?‘ . base64_encode($match[1]) . ‘?=‘ . $match[2]; } } return implode(‘,‘, $array);}

 

参考资料:http://krijnhoetmer.nl/stuff/php/html-plain-text-mail/

 

html格式邮件垃圾率过高的处理办法