2009-08-17 96 views
0

我需要通過smtp使用java客戶端的ssl發送電子郵件。我不知道該怎麼做。如何使用Java客戶端通過SMTP發送電子郵件?

  1. 如果我的Windows機器上安裝了我的服務器證書,我該如何使用它?
  2. 如果我希望它在非Windows機器上工作,是否需要以不同方式獲取證書?

順便說一句:如果我使用的SMTP服務器使用SSL,我可以確定它會使用SSL將郵件發送給收件人嗎?

+0

我不喜歡使用JavaMail,只是Java 1.6 API – Ido 2009-08-17 11:39:05

回答

1

查看this tutorial,其中詳細介紹了使用帶有JSSE(安全套接字擴展)的JavaMail和證書安裝。

如果您不想使用JavaMail,則可以通過TCP套接字自己實現SMTP協議。 See here。但是,你會重新執行許多乍一看似乎微不足道的工作,但會有許多邊緣案例和複雜性。我強烈建議使用這些API作爲工作。

+0

我不喜歡使用JavaMail,只是Java 1.6 API – Ido 2009-08-17 11:37:15

0
  1. 如果只是作爲一個客戶端,你不需要自己的證書的SSL服務器。
  2. 在非Windows機器上沒有什麼不同,特別是在使用Java時。

您可能要做的一件事就是tell your Java client to trust服務器的證書。

你的SSL連接到SMTP服務器是puerly點至點。絕對不能保證它將通過SSL連接到其他客戶端和服務器(除非您控制服務器)。

+0

我知道,客戶端不需要自己的證書,它需要服務器證書。我不知道如何獲得Java代碼的服務器證書,並配置SMTP/SSL使用服務器證書來打開SSL連接。 – Ido 2009-08-17 12:35:20

0

希望這可以幫助您設置服務器證書,讓您的java客戶端代碼信任它。

STORE=/path/to/JRE/cacerts 
keytool -import -trustcacerts -keystore $STORE -storepass changeit -noprompt -file mymailserver.pem -alias mymailserver 

請使用反斜槓,而不是上面的正斜槓(windows傢伙們已經混淆了路徑標識符LOL)。

參考: http://vafer.org/blog/20061010073725/

相關問題