php 在邮件中嵌入图片无需手动点击显示

在php中发送邮件,若是在邮件中图片按理来加img标签在src写图片路径就能够了php

<?php
// 发邮件给用户
include_once($_SERVER["DOCUMENT_ROOT"] . '/PHPMailer/class.phpmailer.php');
$mail = new PHPMailer();

// 图片附件
$imageUrl = dirname('https://' . $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"]) . '/image/';
$picArr = array(
    'fb'    => $imageUrl . "icon-fb.png",
    'in'    => $imageUrl . "icon-in.png",
    'wc'    => $imageUrl . "icon-wc.png"
);

// 邮件内容
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->From = "test";
$mail->FromName = 'test';
$mail->AddAddress("xx@qq.com");
$mail->AddCC("xx@qq.com");
$mail->Subject = "测试";
$mail->Body = "这里是测试在邮件中利用附件在内容中插入图片";
$mail->Body .= "<p>";
$mail->Body .= "<a href='xx'><img src='{$picArr['fb']}'></a>&nbsp;";
$mail->Body .= "<a href='xx'><img src='{$picArr['in']}'></a>&nbsp;";
$mail->Body .= "<a href='xx'><img src='{$picArr['wc']}'></a>&nbsp;";
$mail->Body .= "</p>";
$mail->send();

可是出于安全考虑邮箱平台通常默认不会显示图片,以下图QQ邮箱所示,须要咱们手动点击显示图片
image.png安全

有没有方法不作这个点击操做呢?
答案确定是有的,phpemail支持内嵌附件,而后用附件资源嵌入从而实现默认加载显示的效果
代码以下:测试

<?php
// 发邮件给用户
include_once($_SERVER["DOCUMENT_ROOT"] . '/PHPMailer/class.phpmailer.php');
$mail = new PHPMailer();

// 图片附件, 必须是本地资源, 路径基于当前所在的文件路径
$picArr = array(
    'fb'    =>  "image/icon-fb.png",
    'in'    =>  "image/icon-in.png",
    'wc'    =>  "image/icon-wc.png"
);
// 嵌入附件
foreach ($picArr as $k => $v) {
    $mail->AddEmbeddedImage($v, $k); // 注意留意这个$k, 下面在img须要用到
}

// 邮件内容
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->From = "test";
$mail->FromName = 'test';
$mail->AddAddress("xx@qq.com");
$mail->AddCC("xx@qq.com");
$mail->Subject = "测试";
$mail->Body = "这里是测试在邮件中利用附件在内容中插入图片";
$mail->Body .= "<p>";
$mail->Body .= "<a href='xx'><img src='cid:fb'></a>&nbsp;"; // 这里只须要把嵌入附件时候标记的key写到这里就好了,格式:cid: $k
$mail->Body .= "<a href='xx'><img src='cid:in'></a>&nbsp;";
$mail->Body .= "<a href='xx'><img src='cid:wc'></a>&nbsp;";
$mail->Body .= "</p>";
$mail->send();

效果以下:
image.pngspa

这样就完成了,关键是 AddEmbeddedImage 这个方法,把附件放进去,而后拿到放进 AddEmbeddedImage 中的key,使用固定语法cid: $k 就能够了code

相关文章
相关标签/搜索