2013-01-23 78 views
4

我一直在尋找最佳方式發送電子郵件我的Java應用程序附件。我想用它作爲記錄器文件的用戶錯誤報告。收件人應該是我自己的電子郵件地址。我更喜歡使用電子郵件客戶端。從java應用程序發送電子郵件的最佳方式

我試過如下:

  • 發送電子郵件與用戶認證喜歡this。我不想使用它,因爲用戶需要顯示他的電子郵件帳戶和密碼。此外,我必須爲每個電子郵件地址設置屬性,這是不可能的。

  • 發送電子郵件直接發送到我自己的電子郵件地址,如this in Listing 16.16 (didnt found an english example)。問題是現在每個電子郵件服務器都使用POP認證,這意味着收件人的電子郵件服務器不會接受我的電子郵件。

  • 使用mailto URL語法,如this。無法正常工作,因爲每個電子郵件客戶端的附件功能都無法正常工作。到目前爲止,最好的解決方案是在我將它放到桌面後,向用戶簡單地添加附件。或者上傳數據並添加一個鏈接到電子郵件正文。

  • 我發現的最後一種方法是this one。正如你可以認爲這也行不通,因爲本地主機需要連接到互聯網,並且有足夠的能力發送電子郵件。

希望我解釋了我的問題。有沒有不同的方式發送錯誤報告?

回答

4

解決您所描述的問題的普遍接受的方法是保留所有電子郵件邏輯服務器端,然後讓您的應用程序調用具有適當參數的Web服務。敲開一個PHP腳本/ servlet就可以完成這項工作,然後通過電子郵件發送結果,將它們放入一個mysql數據庫等等,這很容易。但是,如果您不能/不想保留此服務器端,我建議使用JavaMail創建一個MimeMessage,然後使用writeTo()將其寫入EML文件。

然後,您可以做平常:

Desktop.getDesktop().open(emlFile);

...這將打開EML與移交這些文件,這幾乎總是郵件客戶端的默認應用程序文件。仍然不是萬無一失的,但如果你決定直接從客戶端發送郵件,我認爲這就像你會得到的一樣好。

+0

謝謝@ berry120您的建議使用eml文件。我搜索瞭如何創建一個並找到[this](http://stackoverflow.com/a/13136614/1754625)。打開.eml文件後,我無法發送它。它更像是一個模板,而不是一個新的信息。例如,在用thunderbird打開eml文件之後,我必須「將消息編輯爲新消息」來發送它。 – Steckdoserich

+0

@Steckdoserich我認爲這取決於郵件客戶端 - 我敢肯定,當我用outlook打開它時,它就會立即啓動。因此,不幸的是,這並非萬無一失,但我認爲,如果沒有使用控制服務器端的東西來完成繁重的工作,那麼您就不會在安全方面獲得很大的優勢,並且易於設置(填充負載當然,如果SMTP參數正確地工作,SMTP參數仍然可以正常工作,但沒有用戶會這麼做,只是發送錯誤報告,他們可能還需要手工輸入!) – berry120

相關問題