PHP将图像附加到电子邮件
有没有办法将图像附加到在PHP中创build的HTML格式的电子邮件?
我们需要确保在发送给可能无法访问互联网的客户阅读电子邮件(他们显然会下载文件)的电子邮件上的公司标志。
试试PEAR Mail_Mime包,它可以为你embedded图像 。
您需要使用addHTMLImage()方法并传递一个内容标识(cid),它是一个唯一的文本string,您也将在您的img的src属性中用作cid:
URL。 例如:
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);
这可能是最容易使用一些图书馆,可以处理电子邮件附件。 例如,PEAR的Mail_Mime 。
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帐户上testing您的格式。
你是自己动手,还是使用预制课程? 我自己推荐PHP Mailer [0],另外还有PEAR :: Mail_Mime [1],Google会很乐意帮你find。 我一直在使用PHP Mailer发送带有embedded式图像的消息[2]多年,不过要记住,每个图像都会极大地增加电子邮件的带宽分量,所以一般来说,它不应该用于大量的任何事情。 为了回应比尔, 请使用纯文本的select。
[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
这里有足够多的答案可以帮助解决你的具体问题,但是我只是认为可能值得指出的是,你可能有一个更大的问题,你没有考虑到。
具体来说 – 写电子邮件通过PHP发送是充满潜在的陷阱,只有当你有一个真正的好主意,可以出错。
如果您打算相当密集地发送电子邮件,我强烈build议通过专门的电子邮件营销客户端或者实施其中的一个电子邮件营销API,然后将其发送给您。 ( mailchimp显然是一个体面的)。
试试swiftmailer这里是一个很好的例子如何使用embedded式图像http://swiftmailer.org/wikidocs/v3/embedding_images?s%5B%5D=embed