在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