在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> "; $mail->Body .= "<a href='xx'><img src='{$picArr['in']}'></a> "; $mail->Body .= "<a href='xx'><img src='{$picArr['wc']}'></a> "; $mail->Body .= "</p>"; $mail->send();
可是出于安全考虑邮箱平台通常默认不会显示图片,以下图QQ邮箱所示,须要咱们手动点击显示图片安全
有没有方法不作这个点击操做呢?
答案确定是有的,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> "; // 这里只须要把嵌入附件时候标记的key写到这里就好了,格式:cid: $k $mail->Body .= "<a href='xx'><img src='cid:in'></a> "; $mail->Body .= "<a href='xx'><img src='cid:wc'></a> "; $mail->Body .= "</p>"; $mail->send();
效果以下:spa
这样就完成了,关键是 AddEmbeddedImage 这个方法,把附件放进去,而后拿到放进 AddEmbeddedImage 中的key,使用固定语法cid: $k 就能够了code