Java Mail 邮件发送Demo
来源:互联网 发布:vb中integer什么意思 编辑:程序博客网 时间:2024/06/08 14:53
上周公司的项目要求开发邮件发送功能。自己在网上跟着教程边学边做了一下午,现在基本开发完成了。由于一个同事也想看下该怎么写,顺便学习下。所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容。
Demo
第一步,我们先写个Demo,用最快的方式最少的代码向你展示Java Mail 是如何工作的。
我的开发环境是:
- JDK1.6
- java-mail.jar 1.45
构建一个简单的邮件发送,一共需要四步:
1.配置发件人邮箱信息以及创建一个存放SMTP服务器地址等参数的Java 配置类。
//发件人邮箱 String sendEmailAccount = "Example@outlook.com"; //发件人密码 String sendEmailPassword = "password"; // 发件人邮箱的 SMTP 服务器地址, 此处为Outlook邮箱的SMTP服务器 String sendEmailSMTPHost = "smtp-mail.outlook.com"; // 收件人邮箱 String receiveMailAccount = "Example@163.com"; //默认端口号设置为587,也可以设置为465,具体取决于SMTP服务器要求的端口号 final String smtpPort = "587"; // 使用Java配置类进行配置 Properties props = new Properties(); // 使用的协议(JavaMail规范要求) props.setProperty("mail.transport.protocol", "smtp"); // 发件人的邮箱的 SMTP 服务器地址 props.setProperty("mail.smtp.host", sendEmailSMTPHost); // 需要请求认证 props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.port", smtpPort); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.starttls.enable", "true"); props.setProperty("mail.smtp.socketFactory.port", smtpPort );
2.创建一个同邮件服务器交互的session
Session session = Session.getDefaultInstance(props); // debug模式下会在控制台打印出日志,如果不想看日志应该设置为false session.setDebug(true);
3.创建一封格式化的邮件
// 1. 创建一封邮件 MimeMessage message = new MimeMessage(session); // 2. From: 发件人 message.setFrom(new InternetAddress(sendEmailAccount , "ExampleFrom", "UTF-8")); // 3. To: 收件人 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "ExampleUser", "UTF-8")); // 4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题) message.setSubject("test", "UTF-8"); // 5. Content: 邮件正文 message.setContent("<h3>This is a test email.</h3>", "text/html;charset=UTF-8"); // 6. 设置邮件发件时间 message.setSentDate(new Date()); // 7. 保存设置 message.saveChanges();
4.发送邮件
// 1. 根据 Session 获取邮件传输对象 Transport transport = session.getTransport(); // 2. 使用 邮箱账号 和 密码 连接邮件服务器 transport.connect(myEmailAccount, myEmailPassword); // 3. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); // 4. 关闭连接 transport.close();
完整代码
整合以上步骤的完整代码如下:
import java.util.Date;import java.util.Properties;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class MailExample { public static void main(String[] args) throws Exception { /** * 1.配置发件人邮箱信息以及创建一个Java 配置类存放SMTP服务器地址等参数。 */ // 发件人邮箱 String sendEmailAccount = "Example@outlook.com"; // 发件人密码 String sendEmailPassword = "password"; // 发件人邮箱的 SMTP 服务器地址, 此处为Outlook邮箱的SMTP服务器 String sendEmailSMTPHost = "smtp-mail.outlook.com"; // 收件人邮箱 String receiveMailAccount = "Example@163.com"; // 使用Java配置类进行配置 Properties props = new Properties(); // 使用的协议(JavaMail规范要求) props.setProperty("mail.transport.protocol", "smtp"); // 发件人的邮箱的 SMTP 服务器地址 props.setProperty("mail.smtp.host", sendEmailSMTPHost); // 需要请求认证 props.setProperty("mail.smtp.auth", "true"); // 默认端口号设置为587,也可以设置为465,具体取决于SMTP服务器要求的端口号 final String smtpPort = "465"; props.setProperty("mail.smtp.port",smtpPort ); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.starttls.enable", "true"); props.setProperty("mail.smtp.socketFactory.port", smtpPort ); /** * 2.创建一个同邮件服务器交互的session */ Session session = Session.getDefaultInstance(props); session.setDebug(true); // 1. 创建一封邮件 MimeMessage message = new MimeMessage(session); // 2. From: 发件人 message.setFrom(new InternetAddress(sendEmailAccount, "ExampleFrom", "UTF-8")); // 3. To: 收件人 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "ExampleUser", "UTF-8")); // 4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题) message.setSubject("test", "UTF-8"); // 5. Content: 邮件正文 message.setContent("<h3>This is a test email.</h3>", "text/html;charset=UTF-8"); // 6. 设置邮件发件时间 message.setSentDate(new Date()); // 7. 保存设置 message.saveChanges(); /** * 3.创建一封格式化的邮件 */ // 1. 根据 Session 获取邮件传输对象 Transport transport = session.getTransport(); // 2. 使用 邮箱账号 和 密码 连接邮件服务器 transport.connect(sendEmailAccount, sendEmailPassword); // 3. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, transport.sendMessage(message, message.getAllRecipients()); // 4. 关闭连接 transport.close(); }}
这样一个简单的JavaMail的Demo就完成了。快去测试下吧。
阅读全文
0 0
- Java Mail 邮件发送Demo
- 利用 java.mail 发送邮件简单demo
- Java Mail 邮件 demo
- Java Mail 发送邮件
- JAVA MAIL发送邮件
- Java Mail 发送邮件
- Java mail发送邮件
- java mail 发送邮件
- Java Mail发送邮件
- java mail邮件发送
- java mail 发送邮件
- Java mail发送邮件
- java mail发送邮件
- Java mail 发送邮件
- java mail发送邮件
- java mail 发送邮件
- java mail 发送邮件
- java mail 发送邮件
- MySQL中变量的用法——LeetCode 178. Rank Scores
- [JavaScript]YYYY-MM-DD格式字符串计算年龄
- CentOS 6.5/6.6 安装mysql 5.7 最完整版教程
- Java对map进行排序并生成序号
- Win10下配置Java 环境变量
- Java Mail 邮件发送Demo
- mysql处理高并发,防止库存超卖
- Java Mail 邮件发送简单封装
- 每个产品经理都该懂点技术(一)——前后端做什么?
- Python学习笔记:与Java 基础语法对比
- [Git]执行git stash pop时的冲突解决
- Dalvik ART的理解
- [javaScript]身份证号信息解析
- 把控站外seo效果的几个操作点