1.电子邮件

电子邮件是目前网络上使用最多的服务,电子邮件的应用越来越广泛
正常的通信往来
账号注册时,找回密码时等
一般发送的邮件主要可以分解成2大部分
一部分是发信人、接信人、主题等邮件标头
另外一部分是邮件内容,有可能带附件

邮件传输协议:

SMTP
简单邮件传输协议(SimpleMailTransferProtocol,SMTP)由RFC821定义,是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议
SMTP服务器会中转消息给接收方SMTP服务器以便最终让用户经由POP或者IMAP获得邮件内容
POP
邮局协议(Post Office Protocol) ,目前的版本是3,故又称为POP3协议,是由RFC1939定义的
POP协议是允许电子邮件客户端下载服务器上的邮件的协议

IMAP
是更高级的用户接收邮件的协议,是由RFC2060定义的
IMAP全称是因特网消息访问协议(Internet Message Access Protocol),目前用的版本是4,故又称为IMAP4协议

MIME
多用途互联网邮件扩展类型(MultipurposeInternetMailExtensions),它不是邮件传输协议,但是对于传输的内容的消息、附件以及其他的内容定义了格式。可以理解成一个定义格式的标准。

2.JavaMail介绍

JavaMail是sun公司发布的,在Java程序中处理Email的API
JavaMail是开发人员在应用程序中实现邮件发送和接收功能的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP

所需Jar包

JavaMail目前没有被加在标准的JDK中,使用JavaMail必须另行下载,mail.jar
http://www.oracle.com/technetwork/java/javamail/javamail145-1904579.html
JAF框架,activation.jar
http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html

JavaMail主要组件

Session
Session 类定义了一个基本邮件会话(session),是Java Mail API最高层入口类。所有其它类都是经由这个session 才得以生效
Message
定义邮件信息,比如内容、标题等,Message是抽象类,更常用的是javax.mail.internet.MimeMessage类
Address
用于设置邮件的发件人和收件人地址,常用的是其子类javax.mail.internet.InternetAddress
Authenticator
授权者类,以用户名、密码的方式访问邮件服务器
Transport
Transport类实现了发送邮件的协议(通常为SMTP)

发送邮件:

使用JavaMail发送普通邮件
设定所使用的Mail服务器和所使用的传输协议
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", smtphost);
props.put("mail.smtp.auth", "true");
创建新的Session服务
Session.getInstance(props, new Authenticator())
创建一个Message对象
New MimeMessage(session)
设定发、收件人地址,邮件标题、内容等
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Hello JavaMail");
message.setText("Welcome to JavaMail");
使用Transport将邮件发出
Transport.send(message);

某些网站有电子期刊的功能,通常会使用HTML格式来表现丰富的内容
发送HTML格式内容的邮件与普通邮件的不同点为:
使用MimeBodyPart类的setContent方法设定邮件的MIME类型(text/plain或text/html)

new MimeBodyPart().setContent(          messageText,”text/html;charset=gb2312”);
new MimeMultipart().addBodyPart( mimeBodyPart);
message.setContent(mimeMultipart);

发送带附件的邮件

将邮件内容存入MimeBodyPart对象中
将附件文件存入另一个MimeBodyPart对象中
把两个MimeBodyPart对象添加到MimeMultipart对象中
合二为一地加入Message对象中送出

在C/S结构的程序里可以方便的增加附件
在B/S结构应用中需要实现文件上传功能

接收邮件:

使用JavaMail接收普通邮件
设定所使用的Mail服务器和所使用的传输协议
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.pop3.host", pop3Server);
创建Session对象
Session session = Session.getDefaultInstance(props, null);
使用Session得到Store,并连接
Store store = session.getStore("pop3");
store.connect(pop3Server,username,password);
从Store中取得收件箱,并打开,获取邮件信息
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();

小结:

邮件传输的基本原理
邮件服务中常用的协议
SMTP协议
POP协议
IMAP协议
JavaMail进行邮件的收发
接收邮件
发送邮件

17.JavaMail的更多相关文章

  1. javaEE(17)_邮件原理与JavaMail开发

    一.Java邮件开发介绍 为什么要学习javamail开发 •现在很多WEB应用在开发时都需要集成邮件发送功能,例如: •给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. •给过生日的注册 ...

  2. Spring JavaMail发送邮件

    JavaMail的介绍 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.   虽然JavaMail是 ...

  3. 使用JavaMail发送邮件

    一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...

  4. JavaMail和James

      JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micr ...

  5. JavaMail和James的秘密花园

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micros ...

  6. web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  7. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  8. (转载)JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4220190.html 现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件 ...

  9. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

随机推荐

  1. go语言linux环境配置

    linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...

  2. 03 MD5加密、Base64处理

    1 什么是MD5 信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的 应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少:因 ...

  3. CloudNote

    目录 406错误 spring+mybatis建立连接失败 生成文档的乱码问题 服务器接收ajax发送的请求参数时出现乱码 获取不到cookie数据 1 利用Jackson返回json字符串时出现错误 ...

  4. ASCII / Unicode / UTF-8 / GBK

    1 ASCII ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现 ...

  5. PCL—点云滤波(基于点云频率) 低层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5010771.html 1.点云的频率 今天在阅读分割有关的文献时,惊喜的发现,点云和图像一样,有可能也存在频率的概 ...

  6. elasticsearch 6.2.4 安装 elasticsearch-analysis-ik 分词器 (windows 10下)

    访问 https://github.com/medcl/elasticsearch-analysis-ik  找 releases 找到对应的 es 版本 下载 elasticsearch-analy ...

  7. Proxool Provider unable to load JAXP configurator file: proxoolconf.xml

    Proxool Provider unable to load JAXP configurator file: proxoolconf.xml log4j:WARN No appenders coul ...

  8. HDU 5373 The shortest problem (数学)

    题意:给定两个数的n和m,有一种操作,把 n 的各位数字加起来放到 n后面形成一个新数n,问重复 m 次所得的数能否整除 11. 析:这个题首先要知道一个规律奇数位的和减去偶数位的和能被11整除的数字 ...

  9. ubuntu 删除mysql

    UBUNTU 彻底删除 MYSQL 然后重装 MYSQL 删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get r ...

  10. Django之文件下载

    到目前为止,我们的注意力都在HTML网页上,但是实际上,在网站上除了HTML外还有图片,文件,PDF等等. 首先来看下返回一张图片为例,读取本地磁盘上的一张图片并返回到网页上显示. def test1 ...