1

例外が発生したときにlog4jを使用してメールを送信しています。以下は私のlog4jプロパティファイルの設定です。

log4j.rootLogger=WARN, R, email
log4j.appender.R=org.apache.log4j.ConsoleAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%c{1}]: %m%n
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.BufferSize=10
log4j.appender.email.SMTPHost=myhost.com
log4j.appender.email.From=abc@some.com
log4j.appender.email.To=abc@some.com
log4j.appender.email.Subject=Error
log4j.appender.email.layout=org.apache.log4j.PatternLayout

私はmavenプロジェクトです。mail.jar、activation.jar、smtp.jarの依存関係を追加しました。しかし、アプリケーションサーバーの起動自体で、以下のエラーが発生します。

[ERROR] log4j:ERROR Error occured while sending e-mail notification.
[ERROR] javax.mail.NoSuchProviderException: smtp
[ERROR]     at javax.mail.Session.getService(Session.java:782)
[ERROR]     at javax.mail.Session.getTransport(Session.java:708)
[ERROR]     at javax.mail.Session.getTransport(Session.java:651)
[ERROR]     at javax.mail.Session.getTransport(Session.java:631)
[ERROR]     at javax.mail.Session.getTransport(Session.java:686)
[ERROR]     at javax.mail.Transport.send0(Transport.java:166)

私はここで何かが欠けていますか?エラーの根本的な原因は何ですか?SMTPホスト名が正しくないためですか?それとも、依存関係の欠落/競合が原因ですか?

4

3 に答える 3

1

smtp.jar と mail.jar は必要ありません - smtp.jar のすべては mail.jar にもあります。問題が解決するとは思えませんが、smtp.jar を削除してください。

また、クラスパスに JavaMail クラスを含む他の jar ファイル (javaee.jar や j2ee.jar など) がないことを確認してください。

これは、何らかのクラスパスの問題である可能性が最も高いです。JavaMail は、クラス ローダーを使用して、「smtp」などのプロバイダーを構成する構成ファイルを見つけます。クラス ローダーがリソース ルックアップを正しく処理しない場合、この問題が発生する可能性があります。

于 2012-06-11T18:21:52.733 に答える
0

おそらく、smtp.jar をエクスポートして、Web アプリケーションで使用できるようにする必要があります。

于 2013-03-18T14:56:26.813 に答える