首页 > 解决方案 > Log4j2 Gmail SMTP 附加程序

问题描述

我有一个问题,我找不到 xml 格式的 SMTP Appender 的参数。

<SMTP name="MailAppender"
          subject="Great Notes [PROD]"
          to="example@example.com"
          from="example@example.com"
          smtpHost="smtp.gmail.com"
          smtpPort="587"
          bufferSize="50"
          smtpUsername="example@example.com"
          smtpPassword="*********"
          smtpProtocol="smtps"
          mail.smtp.ssl.enable="true"
          mail.smtp.starttls.enable="true"
    >

        <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <Pattern>${LOG_PATTERN}</Pattern>
        </PatternLayout>
    </SMTP>

所以我找不到参数:mail.smtp.ssl.enable & mail.smtp.starttls.enable。

我收到此错误:

ERROR SMTP contains invalid attributes "mail.smtp.ssl.enable", "mail.smtp.ssl.enable"
ERROR SMTP contains invalid attributes "mail.smtp.starttls.enable", "mail.smtp.ssl.enable"



Unrecognized SSL message, plaintext connection? javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;


ERROR An exception occurred processing Appender MailAppender org.apache.logging.log4j.LoggingException: Error occurred while sending email

标签: javaxmlsmtpgmaillog4j2

解决方案


我能够让它使用以下附加程序配置并在测试中发送一些错误级别的消息:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

<SMTP name="SmtpAppender" 
        to="myemail@gmail.com" 
        from="myemail@gmail.com"
        smtpHost="smtp.gmail.com" 
        smtpPort="465"
        bufferSize="4"
        smtpUsername="myemail@gmail.com"
        smtpPassword="myPassword"
        smtpProtocol="smtps"
        smtpDebug="true"
        ignoreExceptions="false" 
        subject="Test">

  </Appenders>

  <Loggers>
    <Root level="ERROR">
      <AppenderRef ref="SmtpAppender"/>
    </Root>

  </Loggers>
</Configuration>

但是,您必须关闭执行发送的 Gmail 帐户上的简单身份验证设置。否则,它将阻止登录/发送。


推荐阅读