【问题标题】:Blank Multipart email空白的多部分电子邮件
【发布时间】:2011-08-31 14:16:35
【问题描述】:

我正在使用 PHP 发送多部分/混合消息(纯文本、html 和附件)。然而,虽然它适用于大多数帐户,但 Yahoo、GMail 和 Sky 似乎显示空白电子邮件。其他所有内容似乎都显示电子邮件。任何帮助都将不胜感激!

我的标题是

$headers .= "Content-Type: multipart/mixed; boundary=\"mixed-" . $random_hash . "-mixed\"\n";
$headers .= "MIME-Version: 1.0\n"; 

内容是;

--mixed-7df05b31-mixed  

Content-Type: multipart/alternative; boundary="alt-7df05b31-alt"  

--alt-7df05b31-alt 

Content-Type: text/plain; charset=utf-8 

            Hello how are you? I am just checking the mailing function.

            Hopefully this will work!

            Cheers.

--alt-7df05b31-alt 

Content-Type: text/html; charset=utf-8 

<div style="font-family:Arial, Helvetica, sans-serif; font-size: 10pt;">

<div> 


            Hello how are you? I am just <b>checking</b> the mailing function.<br><br>


            Hopefully this will work!<br><br>


            Cheers.</div></div>

--alt-7df05b31-alt--

--mixed-7df05b31-mixed 

Content-Type: text/plain; name="abc.txt"  
Content-Disposition: attachment; filename="abc.txt"   
Content-Transfer-Encoding: base64

SEVMTE8gSlVTVCBURVNUSU5HIC4uLiA=

--mixed-7df05b31-mixed--

【问题讨论】:

    标签: php email yahoo multipart


    【解决方案1】:

    这可能是粘贴造成的伪影,但请尝试删除每个边界末尾的空格。 (突出显示文本,您会注意到边界有一个额外的空间,但关闭边界 - 没有)

    【讨论】:

      【解决方案2】:

      请验证您的代码是否如下所示,因为以下代码对我来说可以正常工作。

      $headers .= "MIME-Version: 1.0\r\n";
      $headers .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
      $headers .= "This is a multi-part message in MIME format.\r\n";
      $headers .= "--".$uid."\r\n";
      $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
      $headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
      $headers .= $msg."\r\n\r\n";    
      $headers .= "--".$uid."\r\n";
      $headers .= "Content-Type:application/html; name=\"".$filename."\" \r\n"; // use different content types here
      $headers .= "Content-Transfer-Encoding: base64\r\n";
      $headers .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
      $headers .= $content."\r\n\r\n";
      $headers .= "--".$uid."--";
      

      【讨论】:

        【解决方案3】:

        不要构建自己的 MIME 消息。使用SwiftmailerPHPMailer 为您完成。

        【讨论】:

        • 因为你显然做错了什么。如果您的电子邮件构造正确,它将毫无问题地显示在 gmail/yahoo 中 - 我还没有看到 PHPMailer 在我的所有项目中导致格式错误的消息,无论它在哪里被阅读。
        • 虽然学习原始操作有一些价值。我想知道你上面的代码有什么问题?
        • 我还发现 RMail 是一个功能强大且易于使用的多部分电子邮件库。
        • “不要这样做”很少是编码的有效答案。几乎总是有需要它的情况(例如在这种情况下,如果您由于某种原因无法合并外部库)。一个更合适的答案是,“我建议因为 X 原因避免这种情况,但如果你需要,这里是如何......”
        猜你喜欢
        • 2015-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        • 2016-06-07
        • 1970-01-01
        • 2017-03-19
        相关资源
        最近更新 更多