PHP将图像附加到电子邮件

时间:2009-02-11 13:49:02

标签: php email attachment

有没有办法将图像附加到用PHP创建的html格式的电子邮件中?

我们需要确保在发送给客户的电子邮件上有公司徽标,这些客户在阅读电子邮件时可能无法访问互联网(他们显然可以下载文件)。

6 个答案:

答案 0 :(得分:11)

尝试使用Mail_Mime的PEAR embed images for you包。

您需要使用addHTMLImage()方法并传递内容ID(cid),这是一个唯一的文本字符串,您还将在img的src属性中用作cid:网址。例如:

include('Mail.php');
include "Mail/mime.php";


$crlf = "\r\n";
$hdrs = array( 
        'From' => 'foo@bar.org', 
        'Subject' => 'Mail_mime test message' 
        ); 

$mime = new Mail_mime($crlf); 

//attach our image with a unique content id
$cid="mycidstring";
$mime->addHTMLImage("/path/to/myimage.gif", "image/gif", "", true, $cid);

//now we can use the content id in our message
$html = '<html><body><img src="cid:'.$cid.'"></body></html>';
$text = 'Plain text version of email';

$mime->setTXTBody($text);
$mime->setHTMLBody($html); 

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send('person@somewhere.org', $hdrs, $body);

答案 1 :(得分:2)

使用一些可以处理电子邮件附件的库可能最容易。例如,PEAR的Mail_Mime

答案 2 :(得分:1)

PEAR的Mail_Mime包就是你在这里的目的。

在您设置好消息后,添加附件就像以下一样简单:

$mime = new Mail_mime("\n");

$mime->setTXTBody($msg_text);
$mime->setHTMLbody($msg_html);

// Add gif as attachment to mail
$mime->addAttachment("/path/to/image/smile.gif", "image/gif");

$body = $mime->get();
$headers = $mime->headers($headers);
$mail->send("joe@bloggs.com", $headers, $body);

如果您正在寻找要在电子邮件中的特定位置展示的徽标 - 而不仅仅是作为附件 - 您可以执行以下操作:

// In your message html:
<img src='logo.gif' alt='Our logo' />

// PHP:
$mime->addHTMLImage('/path/to/image/logo.gif');

这种方法可能会有不同的结果,具体取决于您的用户的邮件客户端,因此在发送之前,请尝试在虚拟gmail,yahoo和hotmail帐户上测试您的格式。

答案 3 :(得分:0)

  

你是自己动手,还是使用   预制课程?我推荐PHP   梅勒[0]自己,也有   PEAR :: Mail_Mime [1]等   Google很乐意为您提供帮助   找。我一直在使用PHP Mailer   发送带有嵌入图像的消息[2]   多年来没有任何障碍,但熊   记住,每个图像增加了   电子邮件的带宽重量非常大,所以   通常它不应该用于   任何批量的东西。并呼应比尔,    do 也使用纯文本替代方案。

     

[0] http://phpmailer.sourceforge.net/

     

[1] http://pear.php.net/manual/en/package.mail.mail-mime.php

     

[2] http://phpmailer.sourceforge.net/docs/PHPMailer/PHPMailer.html#AddEmbeddedImage

取自http://lists.evolt.org/archive/Week-of-Mon-20060612/183029.html

答案 4 :(得分:0)

这里有足够多的答案可以帮助解决您的具体问题,但我只是认为可能值得指出您可能有一个更大的问题而您没有考虑过。

具体来说 - 编写通过PHP发送的电子邮件充满了潜在的陷阱,只有在你真正了解可能出现的问题时才应该这样做。

如果您打算相当密集地发送电子邮件,我强烈建议您通过专门的电子邮件营销客户端或实施其中一个将为您发送的电子邮件营销API中的一个来完成。 (mailchimp显然是一个体面的人。)

答案 5 :(得分:0)

试试swiftmailer这是一个很好的例子,如何使用嵌入式图像http://swiftmailer.org/wikidocs/v3/embedding_images?s[]=embed