我使用php的内置邮件功能来发送电子邮件。到目前为止,通过查看其他示例并剥离我认为必要的内容,我已经取得了很多成就。
我目前使用内联图片发送电子邮件的代码如下所示。内容是使用一个模板生成的,该模板可能有也可能没有一些占位符,这些占位符被我的数据库中的值替换(这被省略)
function sendEmail($to, $subject, $htmlmessage, $inline_images = array()){
define('RN', "\n");
/* define mime boundaries */
$mime_boundary_mix = "_mix_" . md5(time());
/* set headers */
$headers = "From: info@domain.nl" . RN;
$headers .= "Reply-To: info@domain.nl" . RN;
$headers .= "Return-Path: info@otherdomain.nl" . RN;
$headers .= "Message-ID: <".time()."_DOMAIN@".$_SERVER['SERVER_NAME'].">" . RN;
$headers .= "X-Mailer: PHP v".phpversion() . RN;
$headers .= "Mime-Version: 1.0" . RN;
$headers .= "Content-Type: multipart/mixed;" . RN;
$headers .= " boundary=\"{$mime_boundary_mix}\"";
/* start email body with mime_boundary */
$msg = "--{$mime_boundary_mix}" . RN;
/* include html */
$msg .= "Content-Type: text/html; charset=\"iso-8859-15\"". RN;
$msg .= "Content-Transfer-Encoding: 8bit". RN . RN;
$msg .= $htmlmessage . RN;
/* check if there are inline images */
if(count($inline_images) > 0) {
foreach($inline_images as $image) {
$path_to_image = $image['path'];
$image_filename = basename($path_to_image);
$image_type = filetype($path_to_image);
$file_handler = fopen($path_to_image, 'rb');
$image_data = chunk_split(base64_encode(fread($file_handler, filesize($path_to_image))));
fclose($file_handler);
/* start mime boundary */
$msg .= "--{$mime_boundary_mix}" . RN;
/* add image data */
$msg .= "Content-Type: {" . image_type_to_mime_type (exif_imagetype($path_to_image)) . "};" . RN;
$msg .= " name=\"{$image_filename}\"" . RN;
$msg .= "Content-Disposition: inline;" . RN;
$msg .= " filename=\"{$image_filename}\"" . RN;
$msg .= "Content-Transfer-Encoding: base64" . RN . RN;
$msg .= $image_data . RN . RN;
}
/* end mime boundary */
$msg .= "--{$mime_boundary_mix}--" . RN;
}
/* end mime boundary */
$msg .= "--{$mime_boundary_mix}--" . RN;
return mail($to, $subject, $msg, $headers);
}
$ inline_images是一个数组,其中包含带有图像路径的项目,如: array([0] =&gt; array('path'=&gt;“myimage.png”))(如果我没弄错,但这并不重要)
任何人都可以告诉我为什么使用这个代码,Outlook会在这封电子邮件中添加一个附件图标以及为什么gmail会显示警告:你想显示所有图像并且在我允许这些图像时不显示任何图像吗? 关于这个的一些问题: - 在Outlook中接收此电子邮件工作正常,但如果可能的话我想隐藏回形针图标,毕竟它是嵌入式图像而不是真正的附件。 - 在GMail中,我收到电子邮件,其中包含图像作为附件和空白(图像图标残破)在电子邮件中的所有图像的位置,我该如何解决这个问题? GMail首先问我是否要允许图像,但是在我允许空白显示之后。我还可以将图像隐藏在GMail中作为附件吗? - 我也尝试在Office Outlook Web Access中查看电子邮件,它以与GMail相同的方式显示电子邮件:图像未显示,但仅作为附件。
任何人都可以帮我吗? 如果您需要更多详细信息,请询问。
答案 0 :(得分:0)
为什么不能选择像phpmailer或switmailer这样的库。他们为html邮件提供全面支持。此外,您不需要创建所有标题。