为什么在Thunderbird渲染中带有图像附件的PHP HTML邮件不正确



在这个问题的帮助下用PHP Mail()发送附件?我修复了电子邮件中的许多问题。Gmail显示正确的邮件,并在HTML中查看图像,但在Thunderbird中,它只显示图像,没有HTML。如果我检查邮件的源代码,它看起来也是正确的。

我能做什么?

$img_src = "km.png"; //about 79KB
$imgbinary = fread(fopen($img_src, "r"), filesize($img_src));
$img_str = base64_encode($imgbinary);
send("name@example.com", "Test Subject", $img_str);
function send($receiver, $subject, $content){
    $header  = "MIME-Version: 1.0" . "n";
    $header .= "Content-Type: multipart/mixed; boundary="aboundary"" . "n";
    $header .= "--aboundary". "n";
    $header .= "Content-Type: multipart/alternative; boundary="xboundary"". "nn";
    $header .= "--xboundary". "n".
                "Content-Type: text/html; charset=utf-8". "n".
                "Content-Transfer-Encoding: 8bit". "n";
    $header .= "n".    
    "<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><body>"."n".
//  "<h1>Hello World</h1><img src="cid:0123456789" alt="no img" /><p>Some Testcontent with umlauts ÖÄÜß</p>". "n". //this shell work in step 2 as well
    "<h1>Hello World</h1><img src="cid:0123456789" alt="no img" /><p>Some Testcontent without umlauts.</p>". "n".
    "</body></html>"."nn";
    $header .= "--xboundary". "n".
                "Content-Type: image/png; name="att.png"". "n".
                "Content-Disposition: inline; filename="att.png"". "n".
                "Content-Transfer-Encoding: base64". "n".
                "Content-ID: <0123456789>". "n".
                "Content-Location: att.png". "n".
                "n".
                chunk_split($content, 64).
                "n".
                "--xboundary--";
    mail($receiver, $subject, "" , $header);
}
    $img_src = "km.png"; //about 79KB
    //$imgbinary = fread(fopen($img_src, "r"), filesize($img_src));
    //$img_str = base64_encode($imgbinary);
    $to= "name@example.com";
    $subject = "Test Subject";

        $headers = "From:  youremail@somewhere.com rn";
        $headers .= "Reply-To:  youremail@somewhere.com rn";
        $headers .= "MIME-Version: 1.0rn";
        $headers .= "Content-Type: text/html" . "rn";
        $headers .= "Content-Transfer-Encoding: base64" . "rn";
        $message ="<html><head><title></title></head><body><h1>Hello World</h1><img src='".$img_src."' alt='no img' /><p>Some Testcontent with umlauts ÖÄÜß</p>
        <h1>Hello World</h1><img src='".$img_src."' alt='no img' /><p>Some Testcontent without umlauts.</p>
        </body></html>";
        $base64contents = rtrim(chunk_split(base64_encode($message)));             
                     $success = mail($to, $subject, $base64contents, $headers);
                    if (!$success){
                        echo "Something Went Wrong";} 

相关内容

  • 没有找到相关文章

最新更新