2012-06-20 64 views
1

我需要實現電子郵件簽名與圖像。截至目前,我們只支持電子郵件簽名中的文本已經working.i需要提供的功能 我可以在郵件簽名內插入圖像。我可以發送電子郵件給用戶在我的應用程序中,也可以發送給外部郵件域中的用戶,如Gmail,雅虎等。當郵件發送給我的應用程序系統中的某個用戶時,系統會使DB入口和收件箱收到郵件時從內部讀取來自數據庫的郵件)。現在,如果用戶 將郵件發送給gmail上的外部用戶,它將使用javax郵件API。與之相似,我可以接收外部郵件域的電子郵件(Gmail,雅虎等),現在我有 基於TIS要求幾個問題: -有關在電子郵件簽名中實現圖像的一些問題?

1)是否有類似Gmail的外部郵件域如何發送圖像的任何標準內部簽名到另一個域(如我的應用程序郵件域)? 與之相關的另一點gmail用戶可以擁有兩個圖像,一個用於簽名,另一個用於身體內部。我將如何確定哪張圖片屬於 簽名?有沒有爲此定義的屬性?

2)也沒能弄清楚什麼是發送(無論是內部應用程序的用戶或外部郵件域用戶)的最佳/一貫的做法含有 圖像,使其當用戶接收到它正確呈現的電子郵件簽名?

我在腦海中想到了第2點: - 我早先認爲我可以使用在How to display an image in jsp?上建議的解決方案。其中 與標籤< .img src =「/ getImage.action?imageId = 123」>,我可以從操作類或servlet中的數據庫獲取圖像並返回。但記住 一旦我發送郵件給用戶在Gmail上,他將無法訪問該servlet.So這種方法似乎不符合要求。 然後我遇到了另一個偉大的計算器鏈接base64 encoded images in email signatures其中 解決方案由Tim梅多拉看起來很大,但再次註釋解決下面的Gmail似乎並不支持它再次結束了我的夥計們真的 我想我應該如果像Gmail,雅虎郵件域支持解決方案建議,因爲在這種情況下,我可以發送圖像作爲base64字符串,而不是 圖像作爲附件。

鄉親們會很感激,如果你能提供給我關於這兩個點1和2

+0

在一個側面第一,雖然意味着Opera的用戶內置的郵件客戶端,請參閱實際上是什麼簽名以及它如何影響郵件中的回覆。 – Shadow2531

回答

6

要包含在電子郵件中的圖像有些指針/辦法,首先你要包括圖像作爲MIME附件的電子郵件。每個附件都必須具有「Content-ID」標頭。

--f46d0444ea0d6991ba04b91c92e6 
Content-Type: image/gif; name="theImage.gif" 
Content-Transfer-Encoding: base64 
Content-ID: <[email protected]> 

[base64 string] 
--f46d0444ea0d6991ba04b91c92e6-- 

2)然後,在電子郵件消息中,包括在<img>標籤的src屬性的Content-ID。

<img src="cid:[email protected]" /> 
+0

嗨邁克爾謝謝你回答。你是說在發送消息時,我必須在我的java類中執行像http://www.rgagnon.com/javadetails/java-0504.html這樣的操作。如果是的話,我沒有看到在示例設置屬性base64字符串,內容id,內容類型等。你可以指向我的一些代碼片段做你在Java中的第1點解釋的東西。對不起,我是這個郵件的新手。另一點我不能發送它只是作爲base64字符串像這樣 –

+0

Red dot而不是發送附件 –

+0

另外,它將有助於提供點我在帖子中提出的一點輸入。在此先感謝 –

0

對於Gmail看到從字節數組的嵌入圖像,我張貼在another similar question的答案是使用ByteArrayDataSource並將其嵌入到HTML電子郵件。下面的代碼片段:

import javax.mail.util.ByteArrayDataSource; 
import org.apache.commons.mail.ImageHtmlEmail; 
... 
ImageHtmlEmail email = new ImageHtmlEmail(); 
byte[] qrImageBytes = createQRCode(); // get your image byte array 
ByteArrayDataSource qrImageDataSource = new ByteArrayDataSource(qrImageBytes, "image/png"); 
String contentId = email.embed(qrImageDataSource, "QR Image");