使用php Mail / mime发送html和内嵌图像

时间:2010-11-29 19:06:09

标签: php

我使用php / Mail_mime使用下面的代码发送样式化的html内容。

$headers = array ('From' => $sender,
          'To' => implode(',',$to), 
          'Subject' => $subject,
          'Reply-To'=>'myemail@mydomain.com',
          'MIME-Version'=>'1.0',
          'Content-Type'=>'text/html'
    ); 
    /*end header*/

    $this->mime = new Mail_mime();
    $tt=$this->mime;
    $tt->addBcc(implode(',',$bcc));
    $tt->addCc(implode(',',$cc));
    $tt->setTXTBody($text);
    $tt->setHTMLBody($body);
    $tt->addHTMLImage('../images/delete.gif');
//  $tt->addAttachment('../images/delete.gif','image/gif');
    $mime_body = $tt->get();
    $mime_hdrs = $tt->headers($headers);

    $smtp = Mail::factory('smtp',
    array ('host' => $this->host,
            'port' => $this->port, 
            'auth' => false, 
            'username' => $this->username, 
            'password' => $this->password)); 
    $recipients=array_merge($to,$cc,$bcc);
    $mail = $smtp->send($recipients, $mime_hdrs, $mime_body);

这是一个类代码,因此初始化是在构造函数上完成的,这里没有发布。

现在我的问题是,虽然上面的代码工作正常,但我没有在发送的电子邮件中看到正确的样式。

例如,如果我将此作为我的电子邮件的邮件正文:

<div style="background-color:silver;">

<h1>我的标题</h1> </div>

在我的电子邮件中,我只能看到我的标题。背景并没有显示为白银。

我在上面的代码中遗漏了什么。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您使用的电子邮件提供商很可能不允许在电子邮件中使用HTML代码,或者它会限制允许的HTML代码中的CSS样式。您使用的是哪个电子邮件提供商?

您可能希望通过向gmail.com电子邮件地址发送电子邮件进行测试,该电子邮件地址允许使用HTML代码,并查看它是否有任何区别。

测试的另一件事是做一个视图源,或者如果你在firefox中使用谷歌浏览器或firebug,检查元素,看看html代码是否放在应该的位置。