繁体   English   中英

需要使用log4j2 SMTP动态更改电子邮件收件人

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM