发送带有内嵌图像的电子邮件

Posted

技术标签:

【中文标题】发送带有内嵌图像的电子邮件【英文标题】:Sending email with inline image 【发布时间】:2015-07-29 12:11:42 【问题描述】:

我的电子邮件发送代码

<?php
$to = 'piyu.mulay@gmail.com';

$subject = 'Website Change Request';

$headers = "From: chintamani.mulay@gmail.com \r\n";
$headers .= "CC: chintamani.mulay@gmail.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message = '<html><body>';
$message .= '<h1>Hello, World!</h1>';
$message .= '<img src="../1.jpg">';
$message .= '</body></html>';

echo mail($to, $subject, $message, $headers);
?> 

当我将链接放入&lt;img src="http://weber-steinach.de/files/339349"&gt; 时效果很好,但是当我将文件路径放入我的 localserver 时,我不会在电子邮件中显示和图像。

【问题讨论】:

你不能使用你的本地服务器。收件人将无权访问它。您可以在外部托管它(就像您正在做的那样)或将其作为多部分消息附加。 @jonny2k9 能否提供maultipart示例的链接 ***.com/questions/922898/… 【参考方案1】:

我终于知道如何做到这一点了。这是我知道的来源link

$bound_text = "----*%$!$%*";
$bound = "--".$bound_text."\r\n";
$bound_last = "--".$bound_text."--\r\n";

$headers = "From: youremail@host.com\r\n";
$headers .= "MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed; boundary=\"$bound_text\""."\r\n" ;

$message = " you may wish to enable your email program to accept HTML \r\n".
$bound;

$message .=
'Content-Type: text/html; charset=UTF-8'."\r\n".
'Content-Transfer-Encoding: 7bit'."\r\n\r\n".
'

<html>

<head>
<style> p color:green </style>
</head>
<body>

A line above
<br>
<img src="cid:http://localhost/a/img/1.jpg">
<br>
a line below
</body>

</html>'."\n\n".
$bound;

$file = file_get_contents("http://localhost/a/img/1.jpg");

$message .= "Content-Type: image/jpeg; name=\"http://localhost/a/img/1.jpg\"\r\n"
."Content-Transfer-Encoding: base64\r\n"
."Content-ID: <http://localhost/a/img/1.jpg>\r\n"
."\r\n"
.chunk_split(base64_encode($file))
.$bound_last;

echo mail($to, $subject, $message, $headers) ;

?>

【讨论】:

很好的答案!你能否解释一下如何展示不止一张图片?请:),我尝试了几种方法,但都没有奏效。 啊,我想通了!我忘了在每张图片之间添加$bound。现在它开始工作了!

以上是关于发送带有内嵌图像的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用内嵌图像Flask-Mail发送电子邮件?

在 Django 中发送带有内联图像的 HTML 电子邮件

JavaMail API 发送电子邮件

PHP电子邮件包括但不显示内嵌图像

如何使用 Perl Email::Mime 内联图像?

Django:如何发送带有嵌入图像的 HTML 电子邮件