java mail 内嵌图片_php 在邮件中嵌入图片无需手动点击显示

在php中发送邮件,如果在邮件中图片按理来加img标签在src写图片路径就可以了

// 发邮件给用户

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 .= "

";

$mail->Body .= "%7B%24picArr%5B ";

$mail->Body .= "%7B%24picArr%5B ";

$mail->Body .= "%7B%24picArr%5B ";

$mail->Body .= "

";

$mail->send();

但是出于安全考虑邮箱平台一般默认不会显示图片,如下图QQ邮箱所示,需要我们手动点击显示图片

17661d484528b08069cdde67b6d12978.png

有没有方法不做这个点击操作呢?

答案肯定是有的,phpemail支持内嵌附件,然后用附件资源嵌入从而实现默认加载显示的效果

代码如下:

// 发邮件给用户

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 .= "

";

$mail->Body .= " "; // 这里只需要把嵌入附件时候标记的key写到这里就行了,格式:cid: $k

$mail->Body .= " ";

$mail->Body .= " ";

$mail->Body .= "

";

$mail->send();

效果如下:

5f48bbc0d5a60d10472ae62be381b0ee.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值