【问题标题】:mail headers shown in mail body, no file, no html邮件正文中显示的邮件标题,没有文件,没有 html
【发布时间】:2012-04-30 16:28:09
【问题描述】:

我在处理带有附件的电子邮件时遇到问题。 标题,包括html(解析为文本)和文件(也解析为文本),都在标题中,作为消息体出现。这段代码以前可以工作,但我不知道发生了什么变化。

有一个随机因素,有时邮件确实正确到达,但我似乎无法弄清楚会破坏邮件/使其正常工作的模式(假设存在)。

这是我生成邮件的代码:

$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: text/html; charset=utf-8\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; 
// use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
$mailto = 'yanivshimony@gmail.com';
if (mail($mailto, $subject, "", $header)) {

    echo "1"; // or use booleans here
} else {
    echo "mail send ... ERROR!";
}

我尝试删除所有标题,只留下以下标题使其正常工作:

$header .= "Content-Type: text/html; charset=utf-8\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";

所以它非常没用,因为它只是一个普通的 html 电子邮件,没有多部分/附件/任何东西 - 但是 HTML 被解析:)

知道什么会破坏标题吗? 谢谢!

【问题讨论】:

    标签: php email header


    【解决方案1】:

    标题显示您的变量 $header 以内容 --38fd5b8f9b812b5db3ec89cd01b6bd9c 开头,这是不对的... 标题 不应以边界开头,而应以正文开头(所以第一个条目应为MIME-Version: 1.0)。很难说这是在哪里发生的,特别是考虑到您删除了我添加的代码格式修复但换行:

    $header.= "MIME-Version: 1.0\r\n";
    

    收件人:

    $header= "MIME-Version: 1.0\r\n";
    

    应该阻止之前对 $header 的任何定义潜入其中。

    【讨论】:

    • 好的,现在这很尴尬......但你是对的:)。我试图添加 $headers = '';。我试图做 unset($headers),但他们都没有工作,所以我什至没有考虑删除它。非常感谢,它确实有效 - 我删除了“。”从 .= 开始,现在一切都很好。我永远不会再低估这个小人物了。再次...
    猜你喜欢
    • 2021-03-08
    • 2020-01-17
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2017-05-26
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多