[英]Need to change the email recipient dynamically using log4j2 SMTP
我正在尝试通过log4j2发送电子邮件。 我需要在运行时更改电子邮件的收件人。
我可以使用以下代码通过代码进行设置:
ThreadContext.put(USER_EMAILS, "jhutc@company.com");
但是,如果我尝试使用以下方法进行设置:
<SMTP name="Mail" subject="MoLi Tests"
to="%X{userEmails}" from="jhutc@company.com"
smtpHost="mail.company.com" smtpPort="25" bufferSize="1">
<ThresholdFilter level="INFO" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout pattern="%m %X{userEmails}"/>
</SMTP>
我得到以下异常:
2016-11-15 12:07:31,904主要错误发送电子邮件通知时发生错误。 com.sun.mail.smtp.SMTPSendFailedException:451 4.3.2请稍后重试
注意,使用to="jhutc@company.com"
可以很好地工作,并证明userEmails变量已成功放入ThreadContext中。
您可以在代码块中使用以下代码范围
public static void main(String ara[])
{
Logger LOGGER = LogManager.getLogger(xxx.class);
try
{
Properties p = System.getProperties();
p.setProperty("mail.smtp.starttls.enable", "true");
ThreadContext.put("userEmails","to@gmail.com");
LOGGER.log(LOG_LEVEL, "TEST"); // your choice level
int a = 4 / 0;
} catch (Throwable e)
{
LOGGER.log(LOG_LEVEL, "TEST");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.