结构图

目录

邮件的知识体系由三部分组成,邮箱服务器,邮件程序,邮件协议。

邮箱服务器一般都是由公司的网络工程师搭建完成,基本上与程序员没有关系。但是笔者还是亲自尝试,使用Apache James搭建一个简单的邮箱服务器。

邮件程序指通过编程来完成发送邮件,接收邮件等相关功能,这里笔者介绍的是Java Mail,这也是本文的重点。当然并不是只有Java才能实现,其他编程语言也会有相应的功能。

Java Mail 的知识体系由以下三个部分组成:

  • 配置文件:配置文件包含一些重要的信息,其中连接邮箱服务器的相关配置是必须的,例如host邮箱服务器的地址,user邮箱账户,password账户密码,protocol邮箱服务器使用的协议,port邮箱服务器使用的端口号(默认为25)。还有一些常用的配置,如字符集,过期时间,是否打印详细的信息等等。
  • 核心对象:
  1. Provider类似于驱动,提供对特定协议的支持,例如Java Mail 支持SMTP,IMAP,POP3,GMail,其他协议类型的邮件无法发送。 要想发送其他邮件类型,需要使用特殊的Provider,需要下载特定的jar包。
  2. Session连接时创建一个会话,用户断开连接后,session对象会相应被销毁。
  3. Transport传输通道,用来发送邮件,可以在客户端与邮箱服务器之间传输邮件数据。
  4. URLName: 类似于URL,它表示邮箱文件的资源定位符,格式为protocol://username:password @ host/ folderName,其中password不是必需的。
  5. Address: 表示一个邮箱账户地址。它有三个属性,其中address表示邮箱账户,personal表示邮件的标题,charset 表示标题的字符集。Address有两种类型,InternetAddress和NewsAddress。InternetAddress主要用来表示普通邮件类型的账户。NewsAddress表示新闻邮件类型的账户。
  6. Message: 表示一封邮件。邮件有种类,信息,操作三个部分。

    Message是一个抽象类,MIMEMessage继承Message表示内容为MIME类型的邮件,如果内容为其他类型,需要实现自定义的类继承Message。

    邮件由Header和Content两部分组成,其中Header包含一些基本的信息,例如发送邮件的时间,邮件标题,邮件接收人等等。Content表示邮件的内容,它可以是字符串,也可以是一个MultiPart复杂类型,MimeMultiPart表示Mime类型的复杂类型。MultiPart可以包含一个或者多个Multipart,BodyPart。而一个BodyPart又可以包含一个或者多个Multipart,Bodypart。两者的关系类似于JSON中的JSONArray与JSONObject,可以互相嵌套。每一个BodyPart又由三部分组成,Attribute,Header,Content。其中Header和Content的含义大体相同。Attribute包含BodyPart的基本信息,例如size表示大小,description表示描述。

    操作有创建邮件,发送邮件,接收邮件,删除邮件,设置标签,监听邮件事件等等。其中发送邮件可以发送带附件的邮件,也可以对邮件的内容进行加密,转码等操作。

  7. Folder: 表示邮件的文件夹。文件夹有属性,状态,文件夹自身操作与文件夹下包含的邮件操作。文件夹有两种状态,关闭和打开,它是某些文件夹操作的前提,例如删除邮件只能在文件夹关闭的状态下才能进行。文件夹属性有名称,权限等信息。文件夹操作有新增,删除,重命名,移动,复制等操作。文件夹中的邮件操作有新增,拷贝,删除,get&set,搜索,标记等
  8. MailEvent表示邮件的事件。邮件的事件类型有六种,ConnectionEvent,表示连接相关的事件;FolderEvent,当创建,删除,重命名邮件文件夹时会触发此事件;MessageChangedEvent,表示邮件内容被改变,或者设置标签时会触发此事件;MesageCountEvent,当邮件数量改变时,会触发此事件,例如新增邮件,删除邮件;StoreEvent,没有理解;TransportEvent,邮件传输完成,或者是传输失败之后会触发此事件。
  • 功能:
  1. 配置文件:介绍配置文件内容各项的含义。

  2. 发送邮件:发送简单类型的邮件,发送内容带有图片,发送内容具有特定格式的邮件,发送带有附件的邮件。

  3. 接收邮件:获取邮件相关的信息,对邮件或邮件文件夹进行相关的操作。

  4. 监听邮件:处理邮件事件,例如当收到新邮件时发送提示消息,传输失败之后重新发送邮件等等。

邮件的功能不止以上四种,笔者随时用到会随时总结。

邮件协议通常指SMTP,IMAP,POP 3等协议,了解这些协议的概念和意义。对于邮件的开发来说,了解这些协议不是必须的。笔者目前并不了解这些协议,之后会补充。

参考资料

API:https://javamail.java.net/nonav/docs/api/

书籍:JavaMail API(O'REILLY),下载地址:http://freepdf-books.com/javamail-api/

Jar包下载地址(Maven):http://mvnrepository.com/artifact/javax.mail/javax.mail-api

初篇——目录(JavaMail)的更多相关文章

  1. 数据库程序接口——JDBC——初篇——目录

    目录 建立连接 核心对象 Driver DriverManager Connection DataSource 常用功能 第一个程序 C3P0数据源 DBCP数据源 事务之Spring事务 执行SQL ...

  2. 后端工具——Maven——初篇——目录

    目录 Maven的知识体系包括四个部分.Maven的配置文件,Maven命令,Maven生命周期,Maven插件.在介绍Maven之前,首先需要介绍如何安装Maven. 安装:介绍Maven在Linu ...

  3. JNI的使用总结初篇

    前言:以下内容是个人在写JNI Demo前后进行查找理解总结得出的一些结论,如有错误的地方希望路过的朋友能够指正. 一.JNI是Java native interface的简称,目前就我所知这类方法的 ...

  4. javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)

    引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...

  5. VB6.0编程笔记——(1)篇外篇&目录

    从计算机专业毕业到进入IT行业,说来也有些年头了.相比较而言算是幸运,也有很多的同学进入了其他行业,也有一些朋友又想进入这个行业.现在回想自己的一路历程,总结一下,也是一份记忆. 基于以上的原因,希望 ...

  6. Elastic Stack初篇-Logstash

     一.Logstash简介      Logstash是一个开源数据收集引擎,具有实时管道功能.Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地. 二.Log ...

  7. 与《YII框架》不得不说的故事—5篇目录

    与<YII框架>不得不说的故事—基础篇 第1章 课程目标 1-1 课程目标 (00:54) 第2章 课前知识准备 2-1 YII的启动和安装 (05:12) 2-2 YII请求处理流程 ( ...

  8. Mysql--开篇&目录

    Mysql 现在是互联网公司中使用得非常广泛的数据库产品了,开源.免费.小巧.易用等诸多特性奠定了其夯实的基础.自己从事 JavaWeb 也有一段时间了,工作中也是用的 Mysql,也会涉及到分析.慢 ...

  9. Go语言初篇

    Go语言初篇 目录 Go-开发环境 Go-语言基础 Go-标准库 Go-面向对象 Go-并发 Go-数据库 Go-web框架 Go语言开发文档:https://studygolang.com/pkgd ...

随机推荐

  1. BZOJ3172&&lg3966 TJOI单词(广义后缀自动机)

    BZOJ3172&&lg3966 TJOI单词(广义后缀自动机) 题面 自己找去 HINT 给出多个文本串,让你查找每个文本串一共出现了多少次,广义后缀自动机建出parent tree ...

  2. 题解 AT4278 【[ABC115A] Christmas Eve Eve Eve】

    题目传送门. 分析 根据题目,我们可以发现要求如下: \(d\)的值 输出 \(d=25\) Christmas \(d=24\) Christmas Eve \(d=23\) Christmas E ...

  3. JavaScript 15 Ajax异步登陆

    /** * Created by KING on 2017/11/28. */ var g_xhr_ui;var g_xhr_login;var g_id; $(document).ready(fun ...

  4. Dubbo服务暴露分析

    Dubbo的服务暴露是一个重要的特性,了解其机制很重要.之前有很多人写了有关的源代码分析,在本文中不再重新分析.官方文档中的一篇写的就很好,本文主要是有关内容进行补充与总结. 传送门:服务导出 为什么 ...

  5. 自定义Redux

    实现mini版redux 1. 理解redux模块 1). redux模块整体是一个对象模块 2). 内部包含几个函数 createStore(reducers) // reducers: funct ...

  6. 使用xshell

    将选定的文本自动复制到剪贴板 并且 鼠标向右按钮定义为粘贴剪贴板内容

  7. 851. spfa求最短路(spfa算法模板)

    给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible. 数据保证不存在负权回路. 输入格式 ...

  8. burpsuite各个板块儿详细讲解

    burpsuite实战指南,想要的都在这里:https://t0data.gitbooks.io/burpsuite/content/

  9. 51Nod 1182 完美字符串 (贪心)

    约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...

  10. Java期末考试冲刺总结

    经过长达将近三个小时的冲刺,我感觉身心俱疲,但它无法掩盖我敲代码的欲望! 三个小时我只实现了公文流转系统的的部分功能. 我深刻的意识到建民老师说的这套关系之复杂,它真的是太复杂了!!!没有系统的梳理, ...