【问题标题】:Outlook Express is not recognizing *some* HTML emailsOutlook Express 无法识别 *一些* HTML 电子邮件
【发布时间】:2010-09-28 02:01:16
【问题描述】:

我将 HTML 电子邮件用于客户的时事通讯。不使用 HTML 邮件是不是的一种选择。我使用 PHPMailer 进行邮件发送,但我也尝试过直接使用 PHP 的 mail() 函数。在这两种情况下,我都会遇到下面描述的相同问题。我尝试过发送多部分以及仅发送 HTML 版本。

在我尝试过的每个电子邮件客户端中,电子邮件都可以正常到达。我的意思是电子邮件被识别为 HTML 电子邮件并呈现内容。 Outlook Express 上的某些帐户除外。我无法辨别为什么它适用于某些人以及为什么它不适用于其他人(全部使用 Outlook Express)。我已将 HTML 电子邮件转发到此帐户(来自 gmail 和 Outlook Express),它们显示得很好。所以 Outlook Express 版本绝对可以显示 HTML 电子邮件。

现在,在这些失败的情况下,Outlook Express 会忽略邮件标题的重要部分。我实际上可以看到这一点:当我查看电子邮件的原始来源时,它显示了粗体部分 - 标题 - 和非粗体部分 - 正文。

以下是电子邮件。我已经编辑了一些“个人”部分。

这部分以粗体显示,被 Outlook Express 识别为标题:

DomainKey-Status: no signature
Received: (qmail xxxx invoked by uid xxx); 22 Dec 2008 21:04:33 +0100
To: xxxxxxxxxxxxxxxxxx
Subject: Test
Date: Mon, 22 Dec 2008 21:04:33 +0100

并且这部分不是粗体,而是显示在 Outlook Express 的邮件内容面板中。

From: Root User <xxxxxxxxxxxxxxxxxxxxxx>
Message-ID: <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
X-Priority: 3
X-Mailer: PHPMailer (phpmailer.sourceforge.net) [version 2.0.3]
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="b1_cb79043f473b53e87bfa759755fce3ce"

--b1_cb79043f473b53e87bfa759755fce3ce
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
test

--b1_cb79043f473b53e87bfa759755fce3ce
Content-Type: text/html; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
<p>Test</p>

--b1_cb79043f473b53e87bfa759755fce3ce--

【问题讨论】:

  • 失败的客户端是否使用 Outlook 2007?某些客户端是否一直失败,或者某些客户端有时工作有时失败?
  • 我可以在 Outlook Express 6 Build 6.00.2900.5512 上重现它,但仅限于特定的电子邮件帐户,而且它只会在我的邮件中失败(但始终如此)。转发到此帐户的其他 HTMl 电子邮件工作正常。
  • 如果选择“显示 HTML”会发生什么? (control-shift-H)

标签: html email outlook


【解决方案1】:

好的,我想我解决了这个问题。标题中的各行由 \r\n 分隔,显然 Outlook 希望它们仅由 \n 分隔。甚至 PHPMailer 似乎都这样做了,所以我现在正在使用 PHP 的 mail() 函数。

【讨论】:

    【解决方案2】:

    在第二个 MIME 块中的 HTML 之前添加换行符将解决您的问题。如果需要,您还可以在该块上设置“Content-Disposition:inline”。在我的测试中,我仍然必须在 Outlook Express 中按 Alt+Shift+H,因为出于安全原因,它默认为纯文本。

    这是最终工作的 EML:

    DomainKey-Status: no signature
    Received: (qmail xxxx invoked by uid xxx); 22 Dec 2008 21:04:33 +0100
    To: xxxxxxxxxxxxxxxxxx
    Subject: Test
    Date: Mon, 22 Dec 2008 21:04:33 +0100
    From: Root User <xxxxxxxxxxxxxxxxxxxxxx>
    Message-ID: <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
    X-Priority: 3
    X-Mailer: PHPMailer (phpmailer.sourceforge.net) [version 2.0.3]
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
        boundary="b1_cb79043f473b53e87bfa759755fce3ce"
    
    --b1_cb79043f473b53e87bfa759755fce3ce
    Content-Type: text/plain; charset = "iso-8859-1"
    Content-Transfer-Encoding: 8bit
    test
    
    --b1_cb79043f473b53e87bfa759755fce3ce
    Content-Type: text/html; charset = "iso-8859-1"
    Content-Transfer-Encoding: 8bit
    Content-Disposition: inline
    
    <p>Test</p>
    
    --b1_cb79043f473b53e87bfa759755fce3ce-- 
    

    【讨论】:

    • 我会在几个小时后回到家(回到我的电脑上,在那里我可以重现问题)试试这个。如果这行得通,你就是我的英雄。
    • 抱歉,这并不能解决这里的问题 :-( 此外,菜单中的 alt-shift-h 选项是灰色的……看起来 Outlook 不信任此电子邮件。
    【解决方案3】:

    我发现如果这个问题是在我使用 PHPMailer v 2.3 时出现的。当我升级到 PHPMailer_v5.0.2 时,邮件在 Outlook 中正确显示。

    【讨论】:

      【解决方案4】:

      尝试改变边界的创建:

      /* Set the boundaries */
      $uniq_id = md5(uniqid(time()));
      
      $this->boundary[1] = '------------01' . $uniq_id; // was started by b1_
      
      $this->boundary[2] = '------------02' . $uniq_id; // was started by b2_
      
      Tomor.cz
      

      编辑: 那不是解决方案::/

      但我发现,如果我通过 smtp 服务器使用 phpmailer 就可以了,当我通过 mail() 函数发送电子邮件时,outlook 就会出现问题..

      【讨论】:

        猜你喜欢
        • 2023-01-23
        • 2014-03-15
        • 2023-03-25
        • 2021-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多