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. day17 12.复习

    最后能抽取成word文档或者是图片之类的. 1.jdbc介绍  jdbc是一套标准,可以让我们Java程序员通过Java代码直接操作数据库,这就够了.jdbc涉及到的包两个:java.sql,java ...

  2. cf688B-Lovely Palindromes

    http://codeforces.com/problemset/problem/688/B B. Lovely Palindromes time limit per test 1 second me ...

  3. win10获取超级管理员权限脚本实现

    建立一个TXT文件,把下面的脚本贴到里面,然后把后缀改成reg格式,双击添加到注册表就可以了, win10_1703版本亲测可用.... Windows Registry Editor Version ...

  4. 批处理基本知识以及进阶 V2.0

    批处理基本知识以及进阶 将以要执行的程序指令 , 像在 dos 模式下一下写入记事本 , 保存成 bat 文件 , 就可以执行了 一 . 简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求 ...

  5. 正割、余割、正弦、余弦、正切、余切之间的关系的公式 sec、csc与sin、cos、tan、cot之间的各种公式

    1.倒数关系 tanα ·cotα=1 sinα ·cscα=1 cosα ·secα=1 2.商数关系 tanα=sinα/cosα cotα=cosα/sinα 3.平方关系 sinα²+cosα ...

  6. python3-字典中存储列表

    # Auther: Aaron Fan #示例1:#存储所点披萨的信息pizza = { '外皮':'厚的', '配料列表':['香菇', '奶酪'],}#概述所点的比萨print('您点了一道&qu ...

  7. java全栈day09----继承 抽象类

    01继承的概述 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类, 构建出来的新类被称作子类,现有类被称作父类在java中 继承如何来实用呢?举个例子 继承的定义格式和使用 *A:继承的 ...

  8. Linux操作系统下IPTables配置方法详解

    如果你的IPTABLES基础知识还不了解,建议先去看看. 们来配置一个filter表的防火墙 1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Cha ...

  9. Mac下的UI自动化测试 (一)

    在我看来,实现UI自动化测试的过程一向都是令人快乐的事情,而维护它们就是跟噩梦一样了,尤其是对每次CI产生的build进行BVT测试,由于开发不会告诉你任何UI的变化,那么你拿到的测试结果就势必会一片 ...

  10. D3.js 之 d3-shap 简介(转)

    [转] D3.js 之 d3-shap 简介 译者注 原文: 来自 D3.js 作者 Mike Bostock 的 Introducing d3-shape 译者: ssthouse 联系译者: 邮箱 ...