电子邮件脚本格式不正确
我有一个脚本每月运行一次cron作业,向客户发送awstats报告。我们最近不得不修改它,因为我们的出站邮件服务器收紧了限制。不幸的是,一些收件人在邮件正文中以原始html代码的形式接收报告。任何人都可以从剧本中知道我出错的地方吗?电子邮件脚本格式不正确
##########################
## Call to get awstats
##########################
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"http://www.$your_domain:2082/awstats.pl"
."?month=$report_month&year=$report_year&output=main&config=$your_domain"
."&lang=en&framename=mainright");
curl_setopt($curl, CURLOPT_USERPWD, "$user:$password");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//$attachment = curl_exec($curl);
$attachment = "<br /><br /><div align=\"center\"><a href=\"$logo_link\"><img src=\"$logo_path\" border=\"0\" /></a>\n";
$attachment .= "<br /><font color=\"#FF0000\"><b>AwStats Report for $your_domain ($report_monthname $report_year)</b></font></div>\n";
$attachment .= "<base href=\"$awstats_img_path\">\n";
$attachment .= curl_exec($curl);
curl_close($curl);
##########################
## Call to send email
##########################
$subject = "AwStats Report for $your_domain ($report_monthname $report_year)";
$header = "From: " . $email_from . " <" . $email_from . ">\n";
$header .= "Reply-To: " . $email_from . "\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\n\n";
$uid = md5(uniqid(time()));
$message = "--" . $uid . "\n";
$message .= "Content-type:text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $attachment . "\n\n";
mail($email_to, $subject, $message, $header);
我明显地忽略了这里的变量声明。但他们都在代码中。我实际上收到了一条消息,并且它在桌面上的Apple Mail中显示得很好。
感谢, CJ
你缺少的,这将导致一些客户端不能正确显示其电子邮件的结尾MIME边界。
的最后一行之前mail();
$message .= "--{$uid}--\n"; // terminate mime boundary
编辑补充一点:后您的意见,我注意到另一个问题。
$header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\n\n";
$uid = md5(uniqid(time()));
需要改为:
$uid = md5(uniqid(time()));
$header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\n\n";
边界原本是空这或许可以解释为什么有些邮件客户端没有显示正确。
Hmmn,我按照你的建议添加了结尾并重新执行了cron。所以现在我得到了Mac Mail中的原始html。但是当我在webmail中检查客户的Horde帐户时,消息显示为“此消息部分包含HTML数据,但内联HTML显示被禁用。” 在新窗口中查看HTML数据。点击视图链接确实显示正确显示消息。所以现在桌子转了。不知道它将如何出现在Outlook中。我在我的Mac邮件程序中的FWIW我看到这个:Mime-Version:1.0 Content-Type:multipart/mixed; boundary =“” –
看起来像额外的编辑做的伎俩。我只用2个客户端进行了测试,他们都能够读取消息。它也在Mac Mail中正确地再次出现。我会尝试与更多的客户,如果一切正常,我会标记解决方案是正确的。感谢您的帮助drew010。 –
哪里?在前景? – devpro
客户端可能正在使用outlook。我正在使用Mac Mail。 –