-
web项目中页面修改javamail发件人信息后发邮件失败5
我们的web项目使用javamail发送邮件。页面可修改发送邮件的服务器、发件人信息,但是现在在页面修改发件人邮箱地址和密码之后,发送邮件失败。重起Tomcat服务器之后,又可以正常发送邮件,各位大神,有谁知道为什么呢?public boolean sendMail(String subject, String body){ Properties props = new Properties(); props.put("mail.smtp.host", server); props.put("mail.smtp.auth", needAuth); props.put("mail.smtp.sender", sender); props.put("mail.smtp.password", password); // 判断是否需要身份认证 MailAuthenticator authenticator = null; if (needAuth) { authenticator = new MailAuthenticator(sender, password); } try { Session session = Session.getDefaultInstance(props, authenticator); MimeMessage message = new MimeMessage(session); InternetAddress from = null; if(null != sender && !"".equals(sender)){ from = new InternetAddress(sender); } message.setFrom(from); String[] str = to.split(","); InternetAddress[] address = new InternetAddress[str.length]; for (int i = 0; i < str.length; i++) { address[i] = new InternetAddress(str[i]); } message.setRecipients(Message.RecipientType.TO,address); message.setSubject(subject, "UTF-8"); message.setSentDate(new Date()); MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(body, "text/html;charset=UTF-8"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mbp); message.setContent(multipart); Transport.send(message); return true; } catch (Exception e) { return false; }
问题补充:修改发件人之后,报如下异常:
com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User 684966a9-37c9-4b09-ba32-ea282cf46b58
;
nested exception is:
com.sun.mail.smtp.SMTPSenderFailedException: 550 Invalid User 684966a9-37c9-4b09-ba32-ea282cf46b58
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:146)
at com.rptauto.util.MailUtil.sendMail(MailUtil.java:164)
at com.rptauto.service.impl.MonitorProcessServiceImpl.sendIdleNofity(MonitorProcessServiceImpl.java:552)
at com.rptauto.service.impl.MonitorProcessServiceImpl.dealIdleStart(MonitorProcessServiceImpl.java:286)
at com.rptauto.service.impl.MonitorProcessServiceImpl.monitorTimepoint(MonitorProcessServiceImpl.java:220)
at com.rptauto.service.impl.MonitorProcessServiceImpl$$FastClassByCGLIB$$5de188e1.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)
at com.rptauto.service.impl.MonitorProcessServiceImpl$$EnhancerByCGLIB$$a602d879.monitorTimepoint(<generated>)
at com.rptauto.service.webservice.ClientMainServiceImpl.monitorTimepoint(ClientMainServiceImpl.java:134)
at com.rptauto.service.webservice.ClientMainServiceImpl$$FastClassByCGLIB$$6696aa53.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)2014年9月25日 15:28
2个答案 按时间排序 按投票排序
-
authenticator = new MailAuthenticator(sender, password);
Session session = Session.getDefaultInstance(props, authenticator);
我猜应该是这两行代码有问题:
1、你看看你的 sender, password 作用域范围是什么?是不是静态变量?如果你要动态修改生效,那肯定是要每次都获取最新的值,或者如果你用缓存的话你在修改后需要同步修改缓存的值。
第二行代码我也不知道怎么检查。你跟踪看看。2014年9月26日 17:08
-
你能定位到发送失败的时候是哪一行报的问题吗?可以加些log或者自己debug跟踪一下,needAuth这个值是不是为null的时候会触发一些运行时异常呢?
2014年9月25日 15:47
相关推荐
使用JAVAMail代发邮件 资源源于不但搜索,自由源于不但努力
java 发邮件java 发邮件java 发邮件java 发邮件
javamail 回执邮件资料
javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
资源包括邮件的发送、邮件的接收、查看邮件总数量和未读邮件数以及查看未读邮件并标记已读,还有我自己编写的简单的文档。希望能帮助需要帮助的筒子们
java web通过javamail实现邮件的发送接收功能。实现了邮件的发送并带有附件的功能。
jsp 利用 javamail发送邮件(附带java web项目文件) 绝对可用
基于JaVaMail的Web邮件客户端的设计与实现
javaMail发邮件 javaMail发邮件 javaMail发邮件
javamail发送邮件;支持群发、单次发送;文本发送,html发送
jar文件 博文链接:https://haige18.iteye.com/blog/795394
java web版邮件接收发送问题 内含原代码
JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API
JSP学习系列之JavaMail发邮件 JSP学习系列之JavaMail发邮件
javamail发送邮件实例 javamail 发送邮件 文本编辑器 kindeditor
javamail smtp imap收发电子邮件,发送附件,联系人管理!
可以利用JavaMail收发Gmail邮件,ssl;写得比较详细,
怎么用JavaMail收取邮件.doc怎么用JavaMail收取邮件.doc
本文描述如何使用James搭建具备一定邮件过滤、邮件操作功能的邮件服务器,以及使用Javamail实现对James服务器邮件的收发功能。 Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,...
JavaMail发邮件原代码例子,已完全调试通过(163,126邮箱)