在使用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发送邮件,以及涉及的关键知识点。 首先,要发送邮件,你需要配置一些必要的参数,包括邮箱账号、密码和SMTP服务器地址(SERVERHOST)。例如,如果你使用的是 Gmail 邮箱,SMTP ...
下面是一个使用JavaMail发送邮件的详细示例代码: ```java import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class EmailSender { public ...
在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...
它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 ...
JavaMail是一个开源库,它提供了用于发送、接收和操作电子邮件的标准API。而James(Apache James)则是一个完整的邮件服务器,它支持SMTP、POP3和IMAP协议,同时也包含了邮件存储、过滤和管理等功能。 **JavaMail的...
JavaMail API 是一个广泛使用的 Java 库,用于发送和接收电子邮件。它提供了丰富的功能来处理不同类型的邮件内容,包括纯文本、HTML 格式以及包含图片在内的富媒体邮件。在实际应用中,开发人员常常需要将这些格式...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。这个库提供了一组丰富的 API,使得开发者能够在 Java 应用程序中方便地访问邮件服务器,进行邮件的发送、接收、管理等操作。本教程主要关注的是如何...
JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收、管理邮件等。这个实例包含了使用JavaMail进行邮件操作所需的全部资源,包括配置和服务的设置,以及具体的代码示例。 首先,...
1. 发送邮件:通常,发送邮件使用SMTP协议。首先,程序通过SMTP连接到邮件服务器,然后建立会话,接着创建邮件对象并设置邮件头信息(如发件人、收件人、主题、正文等),最后调用SMTP服务器的发送方法将邮件发送...
使用JavaMail API 实现邮件发送功能,包括设置SMTP服务器信息、创建MimeMessage对象填充邮件内容、通过Transport类发送邮件。 3.3 邮件接收模块 邮件接收模块采用POP3或IMAP协议,通过Session和Store类获取邮件...
java发邮件 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:...
JavaMail是Java编程语言中用于发送和接收电子邮件的API,它提供了一套全面的接口,使得开发者能够在应用程序中轻松地处理邮件通信。JavaMail通过JavaMail API与多种邮件协议(如SMTP、POP3、IMAP)进行交互,使得...
java发邮件 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:...
总结来说,JavaMail开发原理主要包括理解邮件服务的基本概念,如邮件服务器、电子邮箱、SMTP和POP3协议,以及如何使用JavaMail API创建和发送邮件。开发者还需要熟悉邮件传输过程中可能出现的问题和解决策略,以确保...
要使用JavaMail发送邮件,首先需要添加对应的依赖到项目中,如Maven或Gradle的pom.xml或build.gradle文件。主要依赖包括`javax.mail`和`javax.mail-api`。 3. **配置邮件属性** 在发送邮件前,需要设置一些必要的...
文档详细描述,linux不通外网的情况下,通过在另一台通外网的服务器搭建socks5代理服务,不通外网的服务器通过socks5代理,成功向外网发送邮件的功能。
以下是一些关于如何在Android中使用JavaMail发送邮件的关键知识点: 1. **JavaMail API**:JavaMail API是Java平台上的一个标准API,用于处理邮件服务。它提供了许多类和接口,可以用来创建、发送、接收和管理邮件...
以上内容涵盖了Javamail开发的基本知识点,包括邮件系统的基础概念、SMTP和POP3协议的工作流程、使用Java进行邮件发送和接收的方法以及MIME消息格式的介绍。通过这些知识点的学习,开发者可以更好地理解并应用...
要使用多个邮箱账号发送邮件,我们可以创建多个`JavaMailSender` bean,每个bean对应一个邮件账户。在配置文件中,为每个账号定义一个不同的bean,并为其分配唯一的ID。这样,我们可以通过ID来选择使用哪个账号发送...