JavaWeb 之邮件发送
2024-08-27 02:06:49
1. 邮件协议概述
- SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议) 发邮件协议;
- POP3(Post Office Protocol Version 3, 邮局协议第3版) 收邮件协议;
- IMAP(Internet Message Access Protocol, 因特网消息访问协议)收发邮件协议;
2. 邮件服务器名称
- SMTP 服务器的端口号为 25,服务器名称为
smtp.xxx.xxx
; - POP3 服务器的端口号为 110,服务器名称为
pop3.xxx.xxx
;
3. JavaMail 发邮件
3.1 导包
- mail.jar;
- activition.jar;
- J2EE javax.mail 包
3.2 核心类
Session
- 如果得到了它,表示已经与服务器连接上了, 与 Connection 的作用相似.
MimeMessage
- 它表示一个邮件对象,可以调用它的
setXxx()
方法,设置发件人,发件人,主题以及正文等;
- 它表示一个邮件对象,可以调用它的
TransPort
- 发邮件;
// 得到 Session, 需要使用 Session.getInstance(Properties, Authenticator);
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com"); //设置服务器主机名
props.setProperty("mail.smtp.auth","true"); //设置是否需要验证
Authenticator auth = new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("用户名","密码");
}
};
// 得到 session 对象
Session session = Session.getInstance(props,auth);
try{
// 创建 MimeMessage
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddess("用户名@163.com")); // 设置发件人
msg.setRecipients(RecipientType.TO, "收件人@126.com"); // 设置收件人
msg.setRecipients(RecipientType.CC, "收件人@sohu.com"); // 设置抄送
msg.setRecipients(RecipientType.BCC, "收件人@sina.com"); // 设置暗送
msg.setSubject("这是一封测试邮件"); // 设置标题
// 第一种方式: 普通邮件
msg.setContent("下雨天","text/html;charset=utf-8"); //邮件内容
// 第二种方式: 带有附件的邮件
/*
* 当发送包含附件的邮件时, 邮件体为多部件形式!
* 1. 创建一个多部件的部件内容! MimeMultipart
* MimeMultipart 就是一个集合, 用来装载多个主体部件!
* 2. 我们需要创建两个主体部件, 一个是文本内容的, 另一个是附件;
* 主体部件叫 MimeBodyPart
* 3. 把 MimeMultipart 设置给 MimeMessage 的内容!!
*/
MimeMultipart list = new MimeMultipart(); // 创建多部分内容
// 创建 MimeBodyPart
MimeBodyPart part2 = new MimeBodyPart();
// 设置主体部件的内容
part2.setContent("这是测试邮件","text/html;charset=utf-8");
// 把主体部件添加到集合中
list.addBodyPart(part2);
// 创建第二个 MimeBodyPart
MimeBodyPart part3 = new MimeBodyPart();
// 设置主体部件的内容
part3.attachFile(new File("c:/浮夸.mp3"));
// 设置显示的文件名称, 其中 encodeText 用来处理中文乱码问题
part3.setFilename(MimeUtility.encodeText("浮夸.avi"));
// 把主体部件添加到集合中
list.addBodyPart(part3);
// 把多部件设置给邮件作为邮件的内容
msg.setContent(list);
// 发送
Transport.send(msg);
}catch(MessagingException e){
throw new RuntimeException(e);
}
// 使用 MailUtils 工具发送邮件
public void fun2() throws Exception{
// 1. 得到 Session 对象
Session session = MailUtils.createSession("smtp.163.com","用户名","密码");
// 2. 创建 Mail 对象
Mail mail = new Mail("发件地址","收件地址","邮件主题","邮件内容");
// 3. 创建附件对象
AttachBean ab = new AttachBean(new File("C:/浮夸.avi"),"浮夸.avi");
// 添加到 mail 中
mail.addAttach(ab);
// 发送
MailUtils.send(session,mail);
}
参考资料:
最新文章
- 【记录】JS 获取 URL 中文参数编码
- php多线程详解
- ui-router API
- python 打印对象的所有属性值
- python3爬虫 url管理器
- 如何使用Git——(一)
- 为什么不走INDEX FAST FULL SCAN呢
- CSP内容安全策略
- NSString和NSDate的转换
- 4.锁--无锁编程以及CAS
- input标签在只允许输入数字的时候添加的代码
- python四则运算
- 【Swift 3.0】iOS 国际化切换语言
- Visual Studio Code Java输出中文乱码的问题
- Kafka-API
- .Net文件压缩
- 寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)
- JAVA中Integer类型变量比较问题
- 快速选择算法/Select 寻找第k大的数
- IOS的开发演变历史
热门文章
- Redis Win平台安装
- BEGINNING SHAREPOINT&;#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围
- 采用CDN加速后,如何在程序里获取用户IP地址
- MySQL:系列合集
- Nginx编译安装第三方模块http_substitutions_filter_module2222
- [转]详解JS闭包
- Java并发编程(六)发布与逸出
- 2038: [2009国家集训队]小Z的袜子(hose) 分块
- ffmpeg中的x264编码选项,对应关系
- Linux下mongodb安装及数据导入导出教程