PEAR Mail_mime没有显示适当的版本

时间:2010-10-18 13:54:10

标签: email pear html-email email-attachments

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

我需要脚本做的是提供包含文本和HTML版本内容的电子邮件。内容会有所不同。

  1. 文字版本将包含一些文字和图片附件。
  2. HTML版本将具有包含一些链接和嵌入图像的布局。此图像与文本版本中的附加图像相同。
  3. 到目前为止,我发现的是一个发送纯文本版本和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安装有问题吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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