Java Log4j 发送邮件失败!

来源:互联网  时间:2016/6/25 17:18:31

关于网友提出的“ Java Log4j 发送邮件失败!”问题疑问,本网通过在网上对“ Java Log4j 发送邮件失败!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Java Log4j 发送邮件失败!
描述:

log4j里面的配置如下:


log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=INFO
log4j.appender.mail.BufferSize=1 log4j.appender.mail.SMTPHost=smtp.qq.com log4j.appender.mail.Subject=Log4J ErrorMessage log4j.appender.mail.From=744***3@qq.com log4j.appender.mail.To=744***3@qq.com,744***3@qq.com log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.C/> log4j.appender.mail.SMTPUsername=744***3 log4j.appender.mail.SMTPPassword=********
/>

我特意设置了一个有error级别的按钮,一旦点击它,log4j就抛出如下异常
log4j:ERROR Error occured while sending e-mail notification.
com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first !
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189) at javax.mail.Transport.send(Transport.java:118) at org.apache.log4j.net.SMTPAppender.sendBuffer(Unknown Source) at org.apache.log4j.net.SMTPAppender.append(Unknown Source) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) at org.apache.log4j.Category.callAppenders(Category.java:203) at org.apache.log4j.Category.forcedLog(Category.java:388) at org.apache.log4j.Category.log(Category.java:853) at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:181) at org.directwebremoting.util.CommonsLoggingOutput.error(CommonsLoggingOutput.java:75)
at org.directwebremoting.util.Logger.error(Logger.java:122) at org.directwebremoting.util.LogErrorHandler.error(LogErrorHandler.java:40)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.addDTDDefaultAttrsAndValidate(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124) at org.directwebremoting.impl.DwrXmlConfigurator.setInputStream(DwrXmlConfigurator.java:132)
at org.directwebremoting.impl.DwrXmlConfigurator.setServletResourceName(DwrXmlConfigurator.java:87) at org.directwebremoting.impl.ContainerUtil.configureFromDefaultDwrXml(ContainerUtil.java:263) at org.directwebremoting.impl.ContainerUtil.configureContainerFully(ContainerUtil.java:421) at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:79) at com.caucho.server.dispatch.ServletConfigImpl.createServletImpl(ServletConfigImpl.java:833)
at com.caucho.server.dispatch.ServletConfigImpl.createServlet(ServletConfigImpl.java:735) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:94)
at com.hancai.base.filter.LoginCheckFilter.doFilter(LoginCheckFilter.java:55) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.hancai.base.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:32) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)<> at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682) at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662) at java.lang.Thread.run(Thread.java:619)
但是我用Java代码来发的邮件的话,就一切OK了!下面是Java代码!

	public static void main(String args[]) throws Exception, MessagingException {
		String host = "smtp.qq.com";//发送邮件服务器<>
		String from = "744××××3@qq.com";
		String to = "744××××3@qq.com";
		// new properties
		Properties props = new Properties();
/> // Setup mail server
props.put("mail.smtp.host", host);// 设置smtp主机 props.put("mail.smtp.auth", "true");// 使用smtp身份验证
// Get session Session session = Session.getDefaultInstance(props, null); // Define message
MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("test");//标题
message.setText("http://www.baidu.com/"+"This is test JavaMail");//内容 //http协议部分会自动转换成超链接 message.saveChanges(); // Send message
Transport transport = session.getTransport("smtp"); System.out.println("正在连接"); transport.connect(host, "744××××3", "××××"); System.out.println("正在发送"); transport.sendMessage(message, message.getAllRecipients());
System.out.println("邮件发送成功"); }
有大神知道不?
解决方案1:

哦,难怪,1.2.11还不支持登录认证,要1.2.14以后的才支持。
/>
楼主更新版本吧。

上一篇jsp页面可否不跳转,在当前页面显示servlet返回的信息
下一篇用servlet的类,写一个从页面上下载到Excel文件怎么下载
明星图片
相关文章
《 Java Log4j 发送邮件失败!》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)