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

相關文章
相關標籤/搜索