java - 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
解决方案
我能够让它使用以下附加程序配置并在测试中发送一些错误级别的消息:
<?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 帐户上的简单身份验证设置。否则,它将阻止登录/发送。
推荐阅读
- python - 不打印 xpath 的空结果
- pyspark - 将多行从 pyspark 插入到 cosmosdb
- php - 通过属性值的 xpath 搜索更改 SimpleXML 中的元素值
- javascript - 在 node-rtsp-stream 中停止流的正确方法
- cakephp-3.0 - CakePHP 3.6.10 完全禁用 CSRF 令牌检查
- html - 将特定数量的帖子从类别添加到主页
- c# - 命令 getMore 失败:文件结束 MongoDB
- java - sonarQube 报告错误 - 使字段瞬态或可序列化
- postgresql - postgresql 逻辑复制流失败并显示“从副本读取时数据库连接失败”
- .net - Azure 机器人服务或应用服务的内部服务器错误 (500)