修改:我在此处 使用Logback的to
,当它被配置为使用JNDI查找时?这应该是from
的基本功能形式,并且不存在SMTPAppender
使用JNDI查找的方式,如果它不支持此功能!
我定义了以下Logback SMTPAppender
:
SMTPAppender
如您所见,我使用JNDI查找邮件服务器凭据。
当这个运行时,我得到:
15:50:06,857 | -INFO in ch.qos.logback.classic.net.SMTPAppender [logManager-smtpAppender] - 空目标地址。中止电子邮件传输
这让我意识到:上面的SMTPAppender
或我的<appender name="logManager-smtpAppender" class="ch.qos.logback.classic.net.SMTPAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<asynchronousSending>false</asynchronousSending>
<sessionViaJNDI>true</sessionViaJNDI>
<jndiLocation>java:comp/env/mail/Session-local</jndiLocation>
<subject>%logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>25</bufferSize>
</cyclicBufferTracker>
</appender>
中没有指定来往/来自电子邮件地址。
如何/在哪里(例如,请!)我指定这些?!?我检查了Logback的源代码,此消息从SMTPAppender
内打印出来:
context.xml
但我仍然无法告诉我应该在哪里/如何设置/来自字段。有任何想法吗?提前谢谢!
答案 0 :(得分:4)
来往地址与javamail Session无关。 javamail会话用于配置消息的传输方式,而不是单个消息的详细信息。
您可以使用example中显示的行设置xml配置中的to和from字段,
<configuration>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>ADDRESS-OF-YOUR-SMTP-HOST</smtpHost>
<to>EMAIL-DESTINATION</to>
<to>ANOTHER_EMAIL_DESTINATION</to> <!-- additional destinations are possible -->
<from>SENDER-EMAIL</from>
<subject>TESTING: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
</appender>
<root level="DEBUG">
<appender-ref ref="EMAIL" />
</root>
</configuration>
让SMTPAppender使用JNDI连接源中定义的邮件会话凭据
在jndi中设置java邮件会话凭据特定于您正在使用的应用程序服务器。例如,您可以为tomcat配置jndi凭据,如this question所示。对于weblogic,您可以将其配置为this。
答案 1 :(得分:1)
这是一个已知的错误。 SMTPAppender无法使用JNDI作为连接源,并且从1.0.13开始成功发送电子邮件(过早发布)。