2010-07-29 29 views
2

我有我想添加電子郵件功能的Java Web應用程序,但是,我不確定需要完成此操作。具體來說,我想我的應用程序能夠:向Web應用程序添加電子郵件功能需要什麼?

  1. 發送電子郵件確認的註冊
  2. 允許用戶發送電子郵件彼此,用我的應用程序的域即[email protected]

從我的研究看來我需要像Postfix的郵件傳輸代理(MTA)和可能的IMAP服務器像快遞;但我不明白IMAP服務器的需要。

謝謝。

+1

如果您希望廣大公衆使用您的服務,而不僅僅是一些公司內部網用戶,他們會從路由器後面發送任何內容,您可能需要閱讀以下內容:http://www.codinghorror.com/blog /2010/04/so-youd-like-to-send-some-email-through-code.html如果你真的希望人們收集這些電子郵件。 – 2010-07-29 15:24:17

+1

@Marc,因此如果可能的話使用現有的,可用的SMTP服務器是一個好主意。 – 2010-07-29 15:29:36

+0

你絕對需要至少一臺SMTP服務器。另見[這個答案](http://stackoverflow.com/questions/3270995/is-smtp-server-required-to-send-mail-through-web-server-by-using-javamail-api/3271584#3271584 )。 – BalusC 2010-07-29 15:30:15

回答

2

您需要代碼的Web應用程序內部創建和調度電子郵件到SMTP世界。通常,JavaMail用於此目的,您可以將其放在Web應用程序中,或者(首選)使Web容器通過JNDI提供正確配置的實例。這是供應商特定的。

如果您沒有用於連接到JavaMail的SMTP服務器(通常這是Exchange for Windows商店),您可以運行一個(詢問您的IT管理員)或使用Google Mail或Hotmail或其他人對於您的Web應用程序通過它們發送郵件是可以的。使用GMail作爲SMTP服務器有點棘手,但是設置正確的時候工作得很好。

您需要的SMTP服務器,因爲它處理所有關於MX記錄並重新發送,如果SMTP服務器不列入灰名單,等等,等等

哦無聊的細節,和IMAP是越來越交付郵件,而不是發送郵件。你不需要它。

+0

Postfix是安裝/使用的最簡單的開源SMTP服務器嗎?此外,感謝您澄清IMAP服務器的角色;我在網上查看的一些示例使得IMAP看起來像是發送電子郵件的組件,由於IMAP代表Internet郵件ACCESS協議,所以這是令人困惑的。 – Dan 2010-07-29 16:34:28

+0

Postfix是Ubuntu「喜歡」的MTA,因此所有的文檔都提到了這一點。 「簡單」取決於你的技能:)你的Web容器運行在什麼平臺上,如果它是Linux的某種風格,啓動和運行起來可能非常簡單 – 2010-07-29 16:40:17

1

如果它是一個Java Web應用程序,然後在服務器部分是一個servlet。鑑於從客戶表單發送的電子郵件消息,您的服務器需要將該文本作爲電子郵件發送出去。

有在Java EE棧做到這一點的代碼,也可以專門下載JavaMail。這將允許您的程序充當郵件客戶端。

你的MTA從你的servlet接收消息,並將其發送給用戶。到現在爲止還挺好。

但你也需要一個郵箱,即在箱爲您的用戶郵件的等價物。 Postfix,QMail和其他人提供了一個基本的「扁平」郵箱模式,在這種模式下郵件只是存儲起來,直到客戶端拿起郵件,然後(通常)刪除郵件。通過POP3訪問。 IMAP提供了更多的組織功能,即指定嵌套郵箱層次結構的能力,在它們之間傳輸郵件等等。你可能不想創建一個GUI前端來處理所有這些複雜的事情,所以我猜你並不需要一個IMAP服務器。但是,您確實需要一個相對簡單的POP3服務器來允許您的servlet通過TCP/IP訪問郵箱。這通常是「標準」電子郵件服務器軟件包的一部分。

要讓自己的域名爲世界所知,您需要訪問DNS服務的MX記錄,即您必須在面向Internet的地址上設置一臺或兩臺主機作爲您的郵政局。

最後,如果您想爲自己節省很多麻煩,在配置MTA(SMTP服務器)時要非常小心,以免它被用作開放中繼。也就是說,用戶不可能將郵件發送到外部世界(或者通過找到濫用您的Web界面的方法),並且來自Internet的郵件不應該傳達給您的用戶。最重要的是,互聯網上的郵件不應該被轉發到互聯網上的其他地方。在網絡上找到一個open relay testing service(他們是免費的),一旦你認爲你完成了就可以對你的配置進行測試。

編輯:

看着托爾比約恩的回答,我意識到你可能不希望用戶通過您的應用程序收到他們的郵件;他們可能已經擁有自己的電子郵件提供商和賬戶。在這種情況下,您無需擔心收件箱功能或POP3服務器。您可以考慮在您的域名中提供完整的電子郵件服務,但這是一項非常不討好的工作,如果您有任何選擇,請將這些骯髒的工作留給Gmail,Yahoo,Hotmail等。無論您提供什麼服務都不會讓您的客戶滿意,並且您每天都會與垃圾郵件和其他犯罪作鬥爭。

+0

對於安全問題來說,這是一個很大的優勢。在做這件事之前,三思而後行。 – BalusC 2010-07-29 15:42:09

+0

自己的SMTP服務器的一個簡單的解決方案是安裝和配置postfix的虛擬Ubuntu 10.04服務器實例(在vmware,virtualbox,parallels,虛擬pc中運行)。 – 2010-07-29 16:21:14

+0

在這一點上,我只想提供我的應用程序用戶發送電子郵件的能力。我同意提供完整的電子郵件服務可能是一個不盡人意的工作,只需最少的額外(如果有)好處。 感謝您對開放式繼電器測試服務的詳細說明和單挑;這非常有幫助。我一定會進一步研究繼電器測試。 – Dan 2010-07-29 16:41:47

相關問題