JavaMail
JavaMail是开发人员在应用程序中实现邮件发送和接收功能的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP
邮件传输协议
- SMTP
– 简单邮件传输协议,是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议
– SMTP服务器会中转消息给接收方SMTP服务器以便最终让用户经由POP或者IMAP获得邮件内容 - POP
– POP协议是允许电子邮件客户端下载服务器上的邮件的协议 - IMAP
– IMAP全称是因特网消息访问协议,是更高级的用户接收邮件的协议 - MIME
– 多用途互联网邮件扩展类型,它不是邮件传输协议,但是对于传输的内容的消息、附件以及其他的内容定义了格式。
JavaMail主要组件
- Session
– Session 类定义了一个基本邮件会话(session),是Java Mail API最高层入口类。所有其它类都是经由这个session 才得以生效 - Message
– 定义邮件信息,比如内容、标题等,Message是抽象类,更常用的是javax.mail.internet.MimeMessage类 - Address
– 用于设置邮件的发件人和收件人地址,常用的是其子类javax.mail.internet.InternetAddress - Authenticator
– 授权者类,以用户名、密码的方式访问邮件服务器 - Transport
– Transport类实现了发送邮件的协议(通常为SMTP)
发送邮件
- 设定所使用的Mail服务器和所使用的传输协议
- 创建新的Session服务
Session.getInstance(props, new Authenticator()) - 创建一个Message对象
New MimeMessage(session) - 设定发、收件人地址,邮件标题、内容等
- 使用Transport将邮件发出
JavaMail将这两种不同操作描述为传输(javax.mail.Transport)和存储(javax.mail.Store),传输对应邮件的发送,而存储对应邮件的接收。
发送HTML格式邮件
某些网站有电子期刊的功能,通常会使用HTML格式来表现丰富的内容
- 发送HTML格式内容的邮件与普通邮件的不同点为:
– 使用MimeBodyPart类的setContent方法设定邮件的MIME类型(text/plain或text/html) - 发送带附件的邮件
• 将邮件内容存入MimeBodyPart对象中
• 将附件文件存入另一个MimeBodyPart对象中
• 把两个MimeBodyPart对象添加到MimeMultipart对象中
• 合二为一地加入Message对象中送出
接收邮件
– 设定所使用的Mail服务器和所使用的传输协议
– 创建Session对象
– 使用Session得到Store,并连接
– 从Store中取得收件箱,并打开,获取邮件信息