2009-08-17 13 views
0

私は、javaクライアントを使用してsslでsmtpで電子メールを送信する必要があります。私はそれをどうやって行うのか分からない。Javaクライアントを使用してSSLを使用してSMTP経由で電子メールを送信するにはどうすればよいですか?

  1. Windowsマシンにサーバー証明書がインストールされている場合、どうすれば使用できますか?
  2. Windows以外のマシンでも動作させたい場合は、別の方法で証明書を取得する必要がありますか?

BTW:私が使用するSMTPサーバーがSSLを使用している場合、SSLを使用して受信者にメールを送信することはできますか?

+0

私はそれ、私はクライアントが独自の証明書を必要としないことを知っている唯一のJava 1.6 API – Ido

答えて

1

this tutorialをご覧ください。具体的には、JavaメールとJSSE(セキュアなソケット拡張機能)と証明書のインストールを使用しています。

JavaMailを使用しない場合は、SMTPソケットを介してSMTPプロトコルを実装することができます。 See here。しかし、一目惚れのような多くの作業を再実装することになりますが、多くのエッジケースや複雑さがあります。私は強くその仕事のためのAPIを使用することをお勧めします。

+0

、JavaMailのを使用しませんサーバー証明書が必要です。私は、Javaコードでサーバー証明書を取得する方法がわからず、サーバー証明書を使用してSSL接続を開くようにSMTP/SSLを構成しました。 – Ido

0
  1. 単純にSSLサーバーのクライアントとして機能するには、独自の証明書は必要ありません。
  2. 特にWindows以外のマシンでは、特にJavaを使用しているときと違いはありません。

サーバーの証明書には、tell your Java client to trustがあります。

SMTPサーバーへのSSL接続は、ポイントツーポイントのポイントです。 SSLを介して他のクライアントやサーバーに接続することは絶対に保証されません(サーバーを制御しない限り)。

+0

、私はJavaMailのを使用しないだけのJava 1.6 API – Ido

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/