`
buerkai
  • 浏览: 169575 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

多帐号使用javamail发送邮件问题

    博客分类:
  • j2ee
 
阅读更多
在使用javamail.jar发送邮件,无意中考虑多个帐号同时向某一个邮箱发送邮件,当使用Session.getDefaultInstance(pro,ma),第一次发送邮件总能成功,后面发送邮件就不能成功了,报第二个发送邮件地址和Authenticator中的设置不匹配。查看源码,
public static synchronized Session getDefaultInstance(Properties paramProperties, Authenticator paramAuthenticator)
/*      */   {
/*  298 */     if (defaultSession == null) {
/*  299 */       defaultSession = new Session(paramProperties, paramAuthenticator);
/*      */     }
/*  302 */     else if (defaultSession.authenticator != paramAuthenticator)
/*      */     {
/*  304 */       if ((defaultSession.authenticator == null) || (paramAuthenticator == null) || (defaultSession.authenticator.getClass().getClassLoader() != paramAuthenticator.getClass().getClassLoader()))
/*      */       {
/*  311 */         throw new SecurityException("Access to default session denied");
/*      */       }
/*      */     }
/*  314 */     return defaultSession;
/*      */   }

这里他使用了一个单例类,程序中只有一个Authenticator验证对象,所有使用第二个帐号发送邮件的时候,Authenticator还是保存的第一个帐号的信息,就会抛出异常。

所以如果使用多个帐号发送邮件的话,请使用Session getInstance(Properties paramProperties, Authenticator paramAuthenticator);源码如下:

public static Session getInstance(Properties paramProperties, Authenticator paramAuthenticator)
/*      */   {
/*  232 */     return new Session(paramProperties, paramAuthenticator);
/*      */   }
会去重新实例一次,保证了每一个会话的独立性。

这样就能使用多个帐号发送邮件了,在发送邮件的时候,最好采用线程,有些邮箱的验证连接还是需要一点时间的。
分享到:
评论

相关推荐

    使用javamail发送邮件

    下面我们将详细探讨如何使用JavaMail发送邮件,以及涉及的关键知识点。 首先,要发送邮件,你需要配置一些必要的参数,包括邮箱账号、密码和SMTP服务器地址(SERVERHOST)。例如,如果你使用的是 Gmail 邮箱,SMTP ...

    javamail实现邮箱与邮箱发送邮件

    下面是一个使用JavaMail发送邮件的详细示例代码: ```java import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class EmailSender { public ...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...

    基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT).zip

    它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 ...

    关于JavaMail和James邮件基础

    JavaMail是一个开源库,它提供了用于发送、接收和操作电子邮件的标准API。而James(Apache James)则是一个完整的邮件服务器,它支持SMTP、POP3和IMAP协议,同时也包含了邮件存储、过滤和管理等功能。 **JavaMail的...

    javamail 邮件发送支持带有图片的html格式和普通文本格式

    JavaMail API 是一个广泛使用的 Java 库,用于发送和接收电子邮件。它提供了丰富的功能来处理不同类型的邮件内容,包括纯文本、HTML 格式以及包含图片在内的富媒体邮件。在实际应用中,开发人员常常需要将这些格式...

    JavaMail应用实例说明:简单(HTML)邮件的发送 javaMail基础教程下载

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。这个库提供了一组丰富的 API,使得开发者能够在 Java 应用程序中方便地访问邮件服务器,进行邮件的发送、接收、管理等操作。本教程主要关注的是如何...

    JavaMail使用实例

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收、管理邮件等。这个实例包含了使用JavaMail进行邮件操作所需的全部资源,包括配置和服务的设置,以及具体的代码示例。 首先,...

    基于Javamail的邮件收发系统的设计与实现(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT).zip

    1. 发送邮件:通常,发送邮件使用SMTP协议。首先,程序通过SMTP连接到邮件服务器,然后建立会话,接着创建邮件对象并设置邮件头信息(如发件人、收件人、主题、正文等),最后调用SMTP服务器的发送方法将邮件发送...

    基于JavaMail的电子邮件收发系统毕业设计样本.doc

    使用JavaMail API 实现邮件发送功能,包括设置SMTP服务器信息、创建MimeMessage对象填充邮件内容、通过Transport类发送邮件。 3.3 邮件接收模块 邮件接收模块采用POP3或IMAP协议,通过Session和Store类获取邮件...

    基于Java实现javamail的邮件收发系统源码(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)

    java发邮件 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:...

    邮件JavaMail

    JavaMail是Java编程语言中用于发送和接收电子邮件的API,它提供了一套全面的接口,使得开发者能够在应用程序中轻松地处理邮件通信。JavaMail通过JavaMail API与多种邮件协议(如SMTP、POP3、IMAP)进行交互,使得...

    基于Java实现javamail的邮件收发系统源码(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)分享

    java发邮件 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:...

    JavaMail开发原理简介PPT

    总结来说,JavaMail开发原理主要包括理解邮件服务的基本概念,如邮件服务器、电子邮箱、SMTP和POP3协议,以及如何使用JavaMail API创建和发送邮件。开发者还需要熟悉邮件传输过程中可能出现的问题和解决策略,以确保...

    java 邮件发送功能

    要使用JavaMail发送邮件,首先需要添加对应的依赖到项目中,如Maven或Gradle的pom.xml或build.gradle文件。主要依赖包括`javax.mail`和`javax.mail-api`。 3. **配置邮件属性** 在发送邮件前,需要设置一些必要的...

    socks5代理配置及发送邮件.rar

    文档详细描述,linux不通外网的情况下,通过在另一台通外网的服务器搭建socks5代理服务,不通外网的服务器通过socks5代理,成功向外网发送邮件的功能。

    安卓发送邮件

    以下是一些关于如何在Android中使用JavaMail发送邮件的关键知识点: 1. **JavaMail API**:JavaMail API是Java平台上的一个标准API,用于处理邮件服务。它提供了许多类和接口,可以用来创建、发送、接收和管理邮件...

    Javamail开发实例

    以上内容涵盖了Javamail开发的基本知识点,包括邮件系统的基础概念、SMTP和POP3协议的工作流程、使用Java进行邮件发送和接收的方法以及MIME消息格式的介绍。通过这些知识点的学习,开发者可以更好地理解并应用...

    Spring mail 使用多个账号发送带有附件的HTML邮件

    要使用多个邮箱账号发送邮件,我们可以创建多个`JavaMailSender` bean,每个bean对应一个邮件账户。在配置文件中,为每个账号定义一个不同的bean,并为其分配唯一的ID。这样,我们可以通过ID来选择使用哪个账号发送...

Global site tag (gtag.js) - Google Analytics