第一种写法:
public static void main(String[] args) throws Exception {
// 第一种写法:
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.163.com");
props.setProperty("mail.debug", "true");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("cmjcmj8080@163.com"));
message.setText("测试邮件!请勿回复!");
Transport transport = session.getTransport();
transport.connect("smtp.163.com", 25, "cmjcmj8080@163.com", "****");
transport.sendMessage(message, new Address[] { new InternetAddress(
"47800089@qq.com") });
transport.close();
}
或者
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.163.com");
// 必须有这项设置
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.debug", "true");
// Session管理与stmp的链接信息
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("cmjcmj8080@163.com",
"*******");
}
});
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress("cmjcmj8080@163.com"));
msg.addRecipients(Message.RecipientType.TO,
"chenminjie@xinnet.com,47800089@qq.com");
msg.setSubject("测试--群发", "UTF-8");
msg.setSentDate(new Date());
msg.setText("你好,这是一封测试邮件。收到请勿回复", "UTF-8");
// 使用静态的方法发送信息
// Transport.send(msg,new InternetAddress[]{new
// InternetAddress("lianyumoshen@sina.com")});
Transport.send(msg);
} catch (MessagingException e) {
e.printStackTrace();
}
}
其中javamail Session.getDefaultInstance和getInstance的区别:
如果想要同时使用两个帐号发送javamail,比如使用1@a.com发送1#邮件,使用2@a.com发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:2@a.com创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由1@a.com发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。
Transport 方法 send 和 sendMessage 之间有什么区别?
send() 方法是一个静态方法,可以直接使用,而不需要 Transport 对象的实例。它用于常见、简单的场合,比如使用默认传输发送单条消息。从内部讲,send() 方法首先调用消息上的 saveChanges() 方法。然后创建合适的新 Transport 对象,调用 Transport 的 connect() 方法,调用 Transport 的 sendMessage() 方法来实际发送消息,接着调用 Transport 的 close() 方法,最后丢弃 Transport 对象的新实例,并由垃圾收集器收集(实际上,还有比那更加复杂的,但那是一般的想法)。
如你可以看到,静态 send() 便利 (convenience) 方法是建立在更加通用的每实例 sendMessage() 方法的基础上的。有许多原因可以让应用程序直接使用 sendMessage() 方法。最常见的原因是为了通过在单个连接期间发送多条消息 来提高性能,或者为了手动治理连接以提供验证信息。当使用 sendMessage() 方法时,产生的最常见错误是,忘记在要发送的消息上调用 saveChanges() 方法。
第2种,结合spring
public static void main(String[] args) throws AddressException, MessagingException {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("mail.xinnet.com");
mailSender.setUsername("*****@xinnet.com");
mailSender.setPassword("*****");
Properties prop = new Properties();
prop.put("mail.debug", "true");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.timeout", "25000");
mailSender.setJavaMailProperties(prop);
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper mail = new MimeMessageHelper(mailMessage);
mail.setFrom("******@xinnet.com");
mail.setTo("*****@xinnet.com");
mail.setSubject(" 测试spring Mail");
mail.setText("hello!!spring<br/> html Mail",true);
mailSender.send(mailMessage);
System.out.println(" 邮件发送成功.. ");
}
下一篇贴一些网上找来的一些JavaMail的常见问题
分享到:
相关推荐
压缩包中的文件名“JavaMail发邮件原代码例子”可能包含的就是一个完整的Java类,里面包含了上述的代码实现,你可以直接运行这个示例来发送邮件。在实际应用中,可能还需要处理附件、HTML格式的邮件内容、多收件人等...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们常用于构建动态网页和处理HTTP请求。在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的...
### Spring 3.x企业应用开发实战之JavaMail发送邮件知识点详解 #### 一、JavaMail基础知识的快速学习 ##### 1.1 JavaMail概述 JavaMail是Java领域中最为知名的邮件解决方案之一,由Sun Microsystems(现已被...
这个例子专注于通过JavaMail发送163邮箱的邮件,但原理适用于其他邮箱服务,只需进行适当的配置调整。下面我们将详细探讨JavaMail的核心概念、如何配置以及如何实现邮件发送。 1. **JavaMail API介绍** JavaMail ...
接下来,我们将通过一个具体的例子来展示如何使用 JavaMail API 发送电子邮件。 **示例代码框架**: 1. **初始化Session对象**:创建一个 Session 对象,并设置必要的属性,如 SMTP 服务器地址。 2. **创建...
4. **POP3 和 IMAP 协议**:JavaMail 支持 POP3(Post Office Protocol v3)和 IMAP(Internet Message Access Protocol)协议,这两种协议分别用于下载和在线访问邮件服务器上的邮件。 5. **身份验证**:通过 `...
让我们深入了解一下如何使用JavaMail发送邮件: 1. **配置Properties对象**:首先,你需要创建一个 `Properties` 对象来设置邮件服务器的属性,如SMTP服务器地址、端口号、是否使用SSL/TLS等。 2. **创建Session...
Java发送邮件是通过JavaMail API实现的,这个API包含了处理电子邮件的各种功能,如创建、发送、接收邮件等。在Java中,为了发送邮件,我们需要两个关键的库:`mail.jar`和`activation.jar`,这两个库在提供的压缩包...
要发送邮件,你需要导入`javax.mail`和`javax.mail.internet`这两个核心包。以下是一个简单的邮件发送示例: ```java Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail...
JavaMail是Java编程语言中用于处理邮件服务的API,它为开发者提供了在应用程序中发送、接收和管理电子邮件的能力。在JavaMail 1.6.2版本中,针对JDK 6.0的环境,通常会包含两个核心的jar包:`mail.jar`和`activation...
一旦设置完成,你就可以直接运行实例代码,看到JavaMail发送邮件的过程。 总的来说,这个JavaMail使用实例及所需jar包的教程是学习Java邮件编程的宝贵资源。通过实践这些例子,初学者能够快速掌握JavaMail API的...
其次,实现定时任务在Java中通常有两种常见方式:一是使用`java.util.Timer`和`TimerTask`类,二是使用`java.util.concurrent.ScheduledExecutorService`。前者适合简单的定时任务,而后者则更强大,支持更复杂的...
JavaMail 是一个强大的开源库,它为Java程序员提供了一种简单、标准的方式来处理电子邮件。在Java应用程序中,如果你需要发送或接收电子邮件,JavaMail是一个必不可少的工具。这个压缩包包含了两个关键的Java类库...
本例子是用 JavaMail 来发送邮件的最简单的例子,需要认证才能正常发送邮件。 收件人 Email: <input type="text" name="recipients"><br/> 发件人 Mail: 邮件标题 ...
下面将详细介绍这两个版本中使用Java发送邮件的关键知识点。 1. **JavaMail API**: JavaMail API是Java平台上的一个开源库,用于处理电子邮件。它提供了一组接口和类,使得程序员能够构建邮件客户端和服务器端的...
JavaMail API也支持这两种协议,使得用户可以编写程序来接收邮件。 4. **发送邮件**: 发送邮件涉及的主要步骤包括创建`Session`对象(配置邮件服务器信息),创建`MimeMessage`对象(构建邮件内容),以及使用`...
这两个JAR文件包含了JavaMail API,它是Java平台中用于发送和接收电子邮件的标准API。让我们深入了解一下这两个库及其在Java邮件处理中的作用。 首先,`javax.mail.jar`是JavaMail的核心库,它提供了邮件服务的基本...
以下是一个简单的示例,展示了如何使用JavaMail发送一封简单的文本邮件: ```java import javax.mail.*; import javax.mail.internet.*; public class SimpleEmailSender { public static void main(String[] ...
5. 邮件发送:利用JavaMail API实现SMTP邮件服务,发送邮件通知。 这个项目作为一个可运行实例,对于学习和理解这些技术的实践应用非常有价值。开发者可以在此基础上扩展功能,例如添加错误处理、优化性能或增加...
itcast javamail demo 传智播客邮件开发源码 java实现两种发邮件方式,1、java代码取的session;2、jndi配session。 讲解了邮件收发原理、邮件文件的讲解、实现了简单邮件和复杂邮件的发送