0 0

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个答案 按时间排序 按投票排序

0 0

  authenticator = new MailAuthenticator(sender, password); 

Session session = Session.getDefaultInstance(props, authenticator); 

我猜应该是这两行代码有问题:
1、你看看你的 sender, password 作用域范围是什么?是不是静态变量?如果你要动态修改生效,那肯定是要每次都获取最新的值,或者如果你用缓存的话你在修改后需要同步修改缓存的值。

第二行代码我也不知道怎么检查。你跟踪看看。

2014年9月26日 17:08
0 0

你能定位到发送失败的时候是哪一行报的问题吗?可以加些log或者自己debug跟踪一下,needAuth这个值是不是为null的时候会触发一些运行时异常呢?

2014年9月25日 15:47

相关推荐

    使用JAVAMail代发邮件

    接下来,我们需要在项目中添加这两个 JAR 文件,然后创建一个 Java 类,用于封装邮件信息。这个类称为 MailInfo,包含了邮件的各种信息,例如邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件...

    发送可以修改发件人多数量邮件

    "发送可以修改发件人多数量邮件"这个标题暗示我们关注的是一个能够批量发送邮件,并且允许更改发件人信息的功能。这种功能在某些场景下非常有用,比如营销活动、通知公告或者系统自动报告。 描述中提到的“多数量多...

    WEB项目使用JavaMail 发送邮件

    在IT行业中,发送电子邮件是常见的任务,特别是在WEB项目中,我们经常需要向用户发送确认邮件、通知或密码重置链接。JavaMail是一个强大的API,它允许开发者使用Java编程语言来处理邮件服务。在这个主题中,我们将...

    javaMail 发邮件

    3. 创建MimeMessage对象,并设置发件人、收件人、主题、日期等信息。 4. 如果邮件包含多部分,创建Multipart对象并添加BodyPart。 5. 对每个BodyPart设置其内容,如文本或附件。 6. 将Multipart对象设为Message的...

    web版邮件接收发送问题

    3. **创建Message对象**:使用Message类实例化一个邮件对象,并设置发件人、收件人、主题和正文。 4. **创建Transport对象**:通过Session获取Transport实例,用于实际发送邮件。 5. **发送邮件**:调用Transport...

    使用javaMail发邮件及收取邮箱未读邮件并标记为已读

    然后,你可以创建一个 `MimeMessage` 对象,用于构建邮件的内容,包括发件人、收件人、主题和正文。`MimeMessage` 提供了设置各种邮件头信息的方法,如 `setFrom()`, `setRecipients()`, `setSubject()` 和 `setText...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    Java web中javamail邮件发送实现案例.docx

    在Java Web开发中,使用JavaMail API可以实现邮件的发送和接收功能。JavaMail是一个开源库,它提供了标准的API来处理SMTP(简单邮件传输协议)和其他邮件协议,使得开发者能够在应用程序中方便地发送和接收电子邮件...

    基于JaVaMail的Web邮件客户端的设计与实现

    2. **Message**: 表示一封邮件的信息,包括发件人、收件人、主题、正文等。 3. **Transport**: 负责实际的邮件发送工作。 4. **Store**: 代表邮件服务器,用于连接到邮件服务器并进行邮件操作。 5. **Folder**: 表示...

    javamail 回执邮件资料

    回执邮件是邮件服务中的一项功能,它允许发件人在发送邮件后得知收件人是否已阅读邮件。本资料包主要涵盖了使用 JavaMail 实现回执邮件以及相关邮件操作的知识点。 首先,发送带有回执请求的邮件是通过设置邮件头...

    JavaMail发送邮件的例子

    3. `javax.mail.Message`:表示一个邮件对象,包含邮件的所有信息,如发件人、收件人、主题、正文等。 4. `javax.mail.internet.MimeMessage`:MIME(Multipurpose Internet Mail Extensions)邮件消息,扩展了标准...

    javamail 收发电子邮件

    接着,打开 `INBOX` 文件夹,遍历 `Message` 集合,获取每个邮件的详细信息,如发件人、收件人、日期和内容。 5. 附件处理:JavaMail 提供了 `MimeBodyPart` 类来处理邮件附件。通过创建 `MimeBodyPart`,设置 `...

    jsp 利用 javamail发送邮件(附带java web项目文件)

    本教程将深入探讨如何在JSP(JavaServer Pages)中利用JavaMail API来实现邮件发送功能,同时提供了一个完整的Java Web项目文件供参考。 首先,要使用JavaMail,你需要在项目中引入必要的依赖。在Maven项目中,可以...

    javaMail实现单发/群发邮件操作

    在这个项目中,我们将会探讨如何使用 JavaMail 实现单发和群发邮件的操作。 首先,为了使用 JavaMail 发送邮件,我们需要引入相关的依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    javamail邮件群发、单发_邮件发送

    现在,我们可以创建 `Message` 对象并设置邮件的基本信息,如发件人、收件人、主题和内容: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example....

    JavaMail javamail java电子邮件客户端

    2. **Message**: 表示一封邮件,包含邮件的头部信息(如发件人、收件人、主题和日期)以及邮件正文。开发者可以通过`javax.mail.internet.MimeMessage`类创建并设置Message对象。 3. **Transport**: 负责将Message...

    javamail邮件管理系统

    JavaMail邮件管理系统是一款基于Java技术实现的邮件服务应用程序,它利用SMTP(Simple Mail Transfer Protocol)协议来发送邮件,以及IMAP(Internet Message Access Protocol)协议来接收和管理邮件。这两个协议是...

    javamail(带界面的javamail)

    然后,你可以使用 Transport 类的 send 方法来发送 Message 对象,该对象包含了邮件的所有内容,如发件人、收件人、主题和正文。如果邮件有附件,可以通过 MimeMessage 类和 MimeBodyPart 类来添加。 对于邮件接收...

    JavaMail 具备垃圾邮件过滤功能的邮箱

    JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...

Global site tag (gtag.js) - Google Analytics