2011-12-22 127 views
0

我正在創建一個電子郵件客戶端並經歷許多問題。現在我面臨的最新問題是在HTML電子郵件正文上顯示嵌入式圖像。如何在HTML電子郵件中以普通圖像形式顯示嵌入圖像(PHP)

我的電子郵件正文代碼類似於此:

<img alt="image001" src="cid:[email protected]" id="Picture_x0020_1" /> 

一些相關的職位被發現,但他們是沒有用的。在顯示郵件內容的同時尋找其他可能的類似問題。

我使用POP3的PHP IMAP取郵件。目前使用Gmail作爲郵件服務器。使用SMTP(PhpMailer)發送郵件。

在此先感謝。

回答

0

您是否使用:

$mail->AddEmbeddedImage(filename, cid, name); 
//By using this function with this example's value above, results in this code: 
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

如果有,是什麼問題呢?你爲什麼不開心。

請注意,默認情況下,大多數電子郵件客戶端做不顯示嵌入式圖像,這是適用於Gmail和Outlook。你不能繞過這一點。它具有安全/帶寬保存功能。用戶首先必須在顯示圖像之前按下「顯示圖像」。

+0

我不發送郵件。我從收件箱中顯示郵件。在我的收件箱中,有幾種類型的格式化郵件。一種格式是我提到的嵌入式圖像。我想在我的在線郵件客戶端上顯示圖像。只需要顯示郵件正文就像在Gmail或其他郵件客戶端中查看一樣。 – IvenMS 2011-12-22 07:17:22

+0

你有權訪問圖片附件名稱image001.gif – 2011-12-22 07:24:45

+0

我可以從附件中獲取圖片。 – IvenMS 2012-04-12 12:33:50

1

在HTML中,圖像是具有特定URI的獨立文檔(由src =「」屬性使用)。 在你的MIME boby中,這個src屬性引用了一個相對的MIME部分。 所以,你需要編寫所有的MIME部分內容在不同的文件(即/ tmp目錄/ [md5_MIME_PART_ID]) 然後用CGI腳本重寫電子郵件正文和轉發特定的MIME要求:

readmail.php

<? 
if($_GET['mime']) { 
    readfile("/tmp/{$_GET['mime']}"); 
    die; 
}  
$contents = preg_replace("/sid:/", "readmail.php?mime=$1", $contents); 
echo $contents; 

當然,適當的數據庫系統的效率會更高這裏,但是這是一個開始

+0

感謝您的回覆。我不清楚你解釋的答案。在郵件正文中,圖像數據在部分郵件中給出,每個部分都使用CID進行識別。在img src中使用此CID的HTML主體顯示數據。郵件客戶端可以閱讀並顯示。但是,基於POP3的IMAP郵件客戶端如何在HTML內容中將這些圖像數據顯示爲圖像。請提出你的想法。 – IvenMS 2011-12-22 11:35:34

相關問題