javamail简单了解
2017-10-31 11:27
127 查看
javamail
概述
javamail是一套收发电子邮件的API,不同的厂商可以提供自己的实现类。厂商提供的javamail程序可以有选择实现某些邮件协议。除javamail服务程序外,还需要JAF(Javabean
Activation Framework)来处理不是纯文本的邮件内容,包括MIME,URL页面和文件附件等内容。
邮件协议
SMTP协议Simple Mail
Transfer Protocol:简单邮件传输协议。
发送电子邮件的机制。SMTP服务器会中转消息给接收方SMTP服务器以便最终让用户经由POP或IMAP获得
POP3协议 Post Office Protocol - Version 3。 邮局协议。
用于接收电子邮件的协议。功能简单,但是可以卸载信息以减少磁盘占用
IMAP协议 Internet Mail Access Protocol internet邮件访问协议。
互联网消息协议,用户在服务器上有多个文件夹,并且被多个用户共享。功能强大,但是容易占用太多磁盘
用于取代POP3协议。
MIME (Multipurpose
Internet Mail Extensions多用途互联网邮件扩展)
不是传输协议,但是对传输的内容定义了格式。
javamail中的关键对象
Properties
定义了服务器的一系列属性信息。
Session
是配置信息的集合。主要作用是:1. 接收各种配置属性信息,Properties提供的。2. 初始化JavaMail环境。
Message 消息对象
发送消息的抽象类,一般使用MimeMessage子类实现
Address 地址
描述地址的抽象类,一般使用InternetAddress子类实现
Authenticator 认证者
密码认证的抽象类,使用PasswordAuthenticator子类实现
javamail 的简单模拟
1. 基本邮件发送程序,以126邮件为例子<
4000
/div>
先写Authenticator的实现类
写邮件发送类
测试类
概述
javamail是一套收发电子邮件的API,不同的厂商可以提供自己的实现类。厂商提供的javamail程序可以有选择实现某些邮件协议。除javamail服务程序外,还需要JAF(Javabean
Activation Framework)来处理不是纯文本的邮件内容,包括MIME,URL页面和文件附件等内容。
邮件协议
SMTP协议Simple Mail
Transfer Protocol:简单邮件传输协议。
发送电子邮件的机制。SMTP服务器会中转消息给接收方SMTP服务器以便最终让用户经由POP或IMAP获得
POP3协议 Post Office Protocol - Version 3。 邮局协议。
用于接收电子邮件的协议。功能简单,但是可以卸载信息以减少磁盘占用
IMAP协议 Internet Mail Access Protocol internet邮件访问协议。
互联网消息协议,用户在服务器上有多个文件夹,并且被多个用户共享。功能强大,但是容易占用太多磁盘
用于取代POP3协议。
MIME (Multipurpose
Internet Mail Extensions多用途互联网邮件扩展)
不是传输协议,但是对传输的内容定义了格式。
javamail中的关键对象
Properties
定义了服务器的一系列属性信息。
Session
是配置信息的集合。主要作用是:1. 接收各种配置属性信息,Properties提供的。2. 初始化JavaMail环境。
Message 消息对象
发送消息的抽象类,一般使用MimeMessage子类实现
Address 地址
描述地址的抽象类,一般使用InternetAddress子类实现
Authenticator 认证者
密码认证的抽象类,使用PasswordAuthenticator子类实现
javamail 的简单模拟
1. 基本邮件发送程序,以126邮件为例子<
4000
/div>
先写Authenticator的实现类
public class MyAuthenticator extends Authenticator { //邮箱名 private String name; //邮箱第三方登录认证码 private String pwd; public MyAuthenticator(String name, String pwd ) { this.name=name; this.pwd=pwd; } //因为Authenticator是抽象类无法new出来,要使用PasswordAuthentication //重写方法获得PasswordAuthentication @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication (this.name,this.pwd); } }
写邮件发送类
/** * 邮件发送程序 */ public class SxtMail { public static void sendMail() throws MessagingException, UnsupportedEncodingException { //发送的信息 Message message = null; //配置文件,配置邮箱的协议 端口等 Properties properties = new Properties(); properties.put("mail.smtp.host","smtp.126.com"); properties.setProperty("mail.smtp.port","25"); properties.put("mail.smtp.auth","true"); //session负责收集配置,并初始化邮件上下文环境 Session session = Session.getInstance(properties,new MyAuthenticator("worldtest@126.com","邮件第三方认证码")); //通过session建立message message = new MimeMessage(session); //设置地址 Address from = new InternetAddress("发件方邮件地址"); //设置发送方 message.setFrom(from); //设置收件方 message.setRecipient(Message.RecipientType.TO,new InternetAddress("worldtest@126.com")); //设置邮件日期和标题 message.setSentDate(new Date()); message.setSubject("html邮件"); Multipart multipart = new MimeMultipart(); //加入html内容过程 BodyPart bodyPart = new MimeBodyPart(); StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("<html><body><a href='http://www.baidu.com'>百度一下 </a></body></html>"); bodyPart.setContent(stringBuffer.toString(),"text/html;charset=utf-8"); multipart.addBodyPart(bodyPart); //加入附件过程 BodyPart bodyPart2 = new MimeBodyPart(); FileDataSource fds = new FileDataSource(new File("D:\\redis.txt")); bodyPart2.setDataHandler(new DataHandler(fds)); bodyPart2.setFileName(MimeUtility.encodeText("redis.txt")); multipart.addBodyPart(bodyPart2); //设置邮件内容 message.setContent(multipart); //发送 Transport.send(message); } }
测试类
public class MailTest { public static void main(String[] args) throws MessagingException, UnsupportedEncodingException { SxtMail.sendMail(); } }
相关文章推荐
- 简单了解View是What?
- javamail发送邮件的简单实例
- HttpWebRequest WebResponse 对象简单了解
- 简单了解busybox
- 深入了解JAVA虚拟机和JVisualVM简单使用
- 多线程的简单介绍与了解
- Java- 简单了解线程 线程创建和联合线程(一)
- Java- 简单了解线程 同步线程和死锁(二)
- 简单了解JSP
- 基于JavaMail的Java实现简单邮件发送功能
- 简单了解HTTP协议
- Windows下的内存管理简单了解
- JNA简单了解
- 简单了解Timer与TimerTask
- JavaScript简单了解
- 简单了解Linux
- ios自用学习笔记一委托协议的简单了解
- 学习SQL需要了解的一些简单的命令
- 简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记
- 通过查看网上资料对IOS Runtime的简单了解与描述