我试图通过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。
答案 0 :(得分:0)
您可以在代码块中使用以下代码范围
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");
}