【问题标题】:Log4j: Unable to send mail using Log4j SMTP AppendersLog4j:无法使用 Log4j SMTP Appenders 发送邮件
【发布时间】:2012-03-27 17:51:37
【问题描述】:

当日志文件中出现任何异常时,我需要发送电子邮件。这是我的 log4j.properties 文件

log4j.rootLogger=Info, EMAIL
# EMAIL
log4j.appender.EMAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.EMAIL.SMTPHost=smtp.gmail.com
log4j.appender.EMAIL.SMTPProtocol=smtp 
log4j.appender.EMAIL.SMTPPort=25 
log4j.appender.EMAIL.StartTls=true 
log4j.appender.EMAIL.From=krn1231@gmail.com
log4j.appender.EMAIL.To=krn1231@gmail.com
log4j.appender.EMAIL.SMTPUsername=krn1231
log4j.appender.EMAIL.SMTPPassword=mypassword
log4j.appender.EMAIL.Subject=Test Gmail Smtp
log4j.appender.EMAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.EMAIL.layout.ConversionPattern=[%d] [%t] %-5p %c %x - %m%n
log4j.appender.EMAIL.Threshold=ERROR
log4j.appender.EMAIL.BufferSize=1
log4j.appender.EMAIL.SMTPDebug=true

这是我的测试示例程序

import org.apache.log4j.Logger;

public class Test {

    private static Logger loggers = Logger.getLogger(Test.class);

    public static void main(String args[]) {

        try {
            loggers.info("Hisas");
            throw new NullPointerException();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

我尝试了所有的 trail 和 Error 方法,但没有用

这是我尝试时在 Eclipse 控制台中给出的输出

 log4j:WARN No such property [startTls] in org.apache.log4j.net.SMTPAppender.
DEBUG: setDebug: JavaMail version 1.4ea
java.lang.NullPointerException
    at Test.main(Test.java:11)

当我在命令提示符下执行此操作时

telnet smtp.gmail.com 25

它的反应很好

220 mx.google.com ESMTP f8sm802040pbe.42

【问题讨论】:

  • 您确定您正在查看正确的 log4j.properties 文件吗?因为您的错误消息说,它不能使用“25 # NEW”作为端口值,但您发布的 log4j.properties 仅包含“25”作为端口值。
  • 是的,我已经修改了问题,对造成的混乱感到抱歉。
  • @yyyi777 - 您的问题已经在我链接为duplicate 的问题中得到解答。请参考那个。如果另一个问题已经满足您的查询,您可以关闭此问题。

标签: java log4j gmail smtpappender


【解决方案1】:

首先通过 vm 参数,即 -Dmail.smtp.starttls.enable=true

log4j.rootLogger=DEBUG, sendMail
      log4j.appender.sendMail=org.apache.log4j.net.SMTPAppender  
      log4j.appender.sendMail.SMTPProtocol=smtps
      log4j.appender.sendMail.Threshold=ERROR  
      log4j.appender.sendMail.SMTPPort=465
      log4j.appender.sendMail.SMTPUsername=xxxx@gmail.com 
      log4j.appender.sendMail.From=xxxx@gmail.com
      log4j.appender.sendMail.SMTPPassword=.........
      log4j.appender.sendMail.To=yyyyy@gmail.com 
      log4j.appender.sendMail.SMTPHost=smtp.gmail.com
      log4j.appender.sendMail.Subject=Error Alert  
      log4j.appender.sendMail.layout=org.apache.log4j.PatternLayout  
      log4j.appender.sendMail.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss.SSS} [%p] %t %c - %m%n
      log4j.appender.sendMail.smtp.starttls.enable=true
      log4j.appender.sendMail.smtp.auth=true
      log4j.appender.sendMail.BufferSize=1

【讨论】:

  • 为我工作。谢谢
【解决方案2】:

尝试使用 smtps 协议,因为 Gmail 需要 SSL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2013-02-18
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2011-04-02
    相关资源
    最近更新 更多