【问题标题】:PEAR Mail_mime not showing appropriate versionPEAR Mail_mime 未显示适当的版本
【发布时间】:2010-10-18 13:54:09
【问题描述】:

当我使用 Mail_mime 类发送带有嵌入图像的 HTML/文本邮件时,我在使用 PEAR 时遇到了一些问题。

我需要脚本做的是提供一封电子邮件,其中包含文本和 HTML 版本的内容。内容会有些不同。

  1. 文本版本将包含一些文本和一个图片附件。
  2. HTML 版本将具有包含一些链接和嵌入图像的布局。此图片与文字版中的附件图片相同。

到目前为止,我得到的是一个发送纯文本版本和 HTML 版本的脚本。文本版本实际上不是我告诉它发送的文本版本,而是 HTML 电子邮件的精简版本。

经过一番调查,我发现纯文本版本实际上是在电子邮件中发送的,但电子邮件客户端出于某种奇怪的原因只显示剥离的 HTML 版本。似乎也是 addHTMLImage() 方法破坏了它。没有嵌入的图像

目前我的代码是什么样子的:

<?php

require 'Mail.php';
require 'Mail/mime.php';

$to = 'your@email.com';
$additional_headers = array(
    'Subject' => 'Email subject',
    'From' => 'my@domain.com'
);

$text_body = <<<TEXT
This is the plain text version.
TEXT;

$html_body = <<<HTML
<p>This is the HTML version</p>
<p><img src="image.jpg" alt="" /></p>
HTML;

$mime = new Mail_mime();
$mime->setTxtBody($text_body);
$mime->setHTMLBody($html_body);
$mime->addHTMLImage(file_get_contents('default.jpg'), 'image/jpeg', 'image.jpg', FALSE);

$body = $mime->get();
$headers = $mime->headers($additional_headers);
$mailer =& Mail::factory('smtp', array(
    'host' => 'my.mailserver.net',
    'port' => 0,
    'auth' => TRUE,
    'username' => 'myusername',
    'password' => 'mypassword'
));
$res = $mailer->send($to, $headers, $body);

if (PEAR::isError($res)) {
    echo 'Couldn\'t send message: '.$res->getMessage();
}

?>

据我所知,似乎没有其他人遇到此问题。我的代码或我的 PEAR 安装有问题吗?

【问题讨论】:

  • 我遇到了同样的问题,但我不确定您的问题标题是否准确。无论如何,我已经为 Mime_mail 模块打开了一个错误。希望会有所收获。 pear.php.net/bugs/bug.php?id=18567

标签: email pear html-email email-attachments


【解决方案1】:

将行尾字符传递给 Mail_mime 类的构造函数。

“\n\r”中的窗口 - 或其他方式,不记得了

【讨论】:

    【解决方案2】:

    我们今天遇到了同样的问题,并对此进行了广泛的研究。我们发现,Mozilla Thunderbird 会阻塞不遵循Content-Type 大写模式的 ABNF 字符串。在我们测试过的所有其他电子邮件客户端中,文本替代项均按预期工作。

    所以,你的问题很可能是你的客户。希望这有助于为您指明正确的方向。

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 2011-09-10
      • 2010-12-02
      • 2014-05-20
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2012-03-19
      • 2020-09-09
      相关资源
      最近更新 更多