第1章 电子邮件技术基础 1
1.1 基本概念 2
1.1.1 邮件服务器 2
1.1.2 邮件客户端软件 3
1.1.3 电子邮箱 3
1.1.4 邮件传输协议 4
1.2 DNS与主机名 5
1.2.1 面临的问题 5
1.2.2 DNS 5
1.2.3 主机名 6
1.2.4 DNS服务器 6
1.2.5 正向解析与反向解析 6
1.2.6 DNS的基本应用 6
动手实践 设置DNS查询服务器 8
1.3 域名管理与域名的解析原理 18
1.3.1 DNS域 18
1.3.2 DNS域的管理 19
1.3.3 域名的解析原理 21
1.3.4 利用动态DNS在家搭建网络服务器 24
1.4 MX记录的应用 26
动手实践 根据域名查询SMTP服务器 27
1.5 电子邮件的工作原理 30
多想一想 邮件客户端程序和SMTP服务器分别如何发送邮件 32
第2章 邮件传输协议 35
2.1 SMTP协议 36
动手实践 借助Telnet程序手工发送邮件 39
多学两招 邮件群发软件的实现和防范垃圾邮件的基本措施 51
2.2 POP3协议 54
动手实践 用Telnet程序分析邮件的接收过程 56
2.3 IMAP协议 61
2.4 思考与实践 62
第3章 邮件的组织结构 63
3.1 RFC822邮件格式 64
动手实践 在Outlook中查看邮件的源内容 67
3.2 MIME协议 69
3.3 MIME邮件的组织结构 71
3.4 MIME消息的头字段 73
3.4.1 Content-Type 73
3.4.2 其他头字段 76
3.5 MIME邮件的编码方式 78
3.6 MIME实例分析 82
多学两招 邮件传播病毒的原理 90
3.7 思考与实践 92
第4章 JavaMail开发概述 93
4.1 JavaMail API 94
4.1.1 JavaMail API简介 94
4.1.2 配置JavaMail开发环境 94
动手实践 配置JavaMail开发环境 94
4.1.3 JavaMail API的分类及体系结构 99
4.2 JAF简介 101
第5章 创建邮件内容 103
5.1 基本原理 104
5.2 与邮件内容相关的API类图 106
5.3 InternetAddress类 107
5.3.1 构造函数 107
5.3.2 getAddress方法 108
5.3.3 parse方法 108
5.4 MimeMessage类 108
5.4.1 Message.RecipientType内部类 109
5.4.2 构造函数 109
5.4.3 setFrom方法 110
5.4.4 setRecipient与setRecipients方法 111
5.4.5 addRecipient与addRecipients方法 111
5.4.6 setSendDate方法 112
5.4.7 setSubject方法 112
5.4.8 addHeader与setHeader方法 113
5.4.9 setContent方法 113
5.4.10 setText方法 114
5.4.11 setFlag方法 114
5.4.12 saveChanges方法 115
5.4.13 writeTo方法 115
5.5 创建简单的纯文本邮件 116
动手实践 创建简单的纯文本邮件 116
5.6 创建HTML格式的邮件 119
动手实践 创建HTML格式的邮件 119
多学两招 判断邮件是否已被接受者阅读 123
5.7 MimeBodyPart类 124
5.7.1 构造函数 124
5.7.2 setDataHandler方法 125
5.7.3 setContentID方法 125
5.7.4 setDisposition方法 125
5.7.5 setFileName方法 126
5.8 MimeMultipart类 126
5.8.1 构造函数 126
5.8.2 addBodyPart方法 127
5.8.3 setSubType方法 128
5.8.4 getContentType方法 128
5.8.5 getBodyPart方法 128
5.8.6 getCount方法 129
5.9 创建包含内嵌图片的复杂邮件 129
动手实践 创建包含内嵌图片的复杂邮件 129
5.10 创建包含图片和附件的复杂邮件 135
动手实践 创建同时包含内嵌图片和附件的复杂邮件 136
5.11 思考与实践 140
第6章 发送邮件 141
6.1 邮件发送API的体系结构 142
6.2 Session类 143
6.2.1 getInstance与getDefaultInstance方法 143
6.2.2 getTransport方法 145
6.2.3 getStore方法 145
6.2.4 setDebug方法 146
6.3 Transport类 146
6.3.1 connect方法 147
6.3.2 sendMessage方法 148
6.3.3 close方法 148
6.3.4 send方法 149
6.4 邮件发送程序的编程实例 150
动手实践 编写应用JavaMail API的邮件发送程序 151
6.5 Authenticator类的应用 157
6.5.1 Authenticator类 157
6.5.2 PasswordAuthentication类 158
6.5.3 应用Authenticator类的编程实例 159
动手实践 用Authenticator类提供用户认证信息 160
多学两招 灵活使用Authenticator类 164
6.6 为邮件发送程序配置代理 165
动手实践 为JavaMail程序配置代理 168
6.7 SMTP服务器功能的邮件发送程序 173
6.7.1 什么是SMTP服务器功能的邮件发送程序 173
6.7.2 JNDI的基本应用 174
动手实践 使用JNDI API获取DNS信息 180
6.7.3 编写具有SMTP服务器功能的邮件发送程序 185
动手实践 以SMTP服务器方式发送邮件 185
6.8 在Web应用中实现邮件发送功能 190
动手实践 在Web应用中实现邮件发送功能 192
6.9 思考与实践 199
第7章 JAF框架及其在JavaMail中的应用 201
7.1 JAF框架概述 202
7.2 JAF的体系结构 203
7.3 DataSource接口 205
7.3.1 getInputStream方法 205
7.3.2 getOutputStream方法 205
7.3.3 getContentType方法 205
7.3.4 getName方法 206
7.3.5 URLDataSource类 206
7.3.6 FileDataSource类 207
7.3.7 FileTypeMap类 208
7.4 JAF获取文件MIME类型的过程 210
7.5 DataHandler类 212
7.5.1 构造函数 212
7.5.2 getDataSource方法 213
7.5.3 getName方法 213
7.5.4 getContentType方法 214
7.5.5 getInputStream方法 214
7.5.6 writeTo方法 215
7.5.7 getOutputStream方法 215
7.5.8 setCommandMap方法 215
7.5.9 getPreferredCommands方法 216
7.5.10 getAllCommands方法 216
7.5.11 getCommand方法 217
7.5.12 getContent方法 217
7.5.13 getBean方法 217
7.6 通过JAF框架操作数据 218
7.6.1 CommandMap类 218
7.6.2 CommandInfo类 220
7.6.3 CommandObject接口 222
7.6.4 JAF框架构建CommandObject对象的过程 222
7.6.5 编写和安装自定义的命令处理器 225
7.7 使用JAF创建MIME消息 227
动手实践 使用JAFAPI创建MIME邮件中的MIME消息 228
第8章 使用JavaMail接收邮件 231
8.1 邮件接收API的体系结构 232
8.2 Store类 233
8.2.1 connect方法 233
8.2.3 isConnected方法 234
8.2.2 getFolder方法 234
8.3 Folder类 235
8.3.1 exists方法 235
8.3.2 open方法 236
8.3.3 getMessage方法 236
8.3.4 getMessages方法 236
8.3.5 search方法 237
8.3.6 getMessageCount方法 237
8.3.7 close方法 238
8.4 Flags类 238
8.4.1 Flags.Flag类 238
脚下留心 设置邮件标记需要注意的问题 239
8.4.2 构造函数 240
8.4.3 add方法 240
8.4.4 remove方法 241
8.4.5 contains方法 241
8.4.6 getSystemFlags方法 242
8.4.7 getUserFlags方法 242
8.4.8 设置和删除邮件标记 242
脚下留心 邮件删除标记在各个不同的邮件服务器上的实现 243
8.5 Message类中与接收邮件相关的方法 245
8.5.1 getFrom方法 245
8.5.2 getSendDate方法 246
8.5.3 getRecipients方法 246
8.5.4 getAllRecipients方法 246
8.5.5 getReceivedDate方法 246
8.5.6 getReplyTo方法 247
8.5.7 getSubject方法 247
8.5.8 getDataHandler方法 247
8.5.9 getContent方法 247
8.5.10 getHeader方法 248
8.5.11 getAllHeaders方法 248
8.5.12 getFolder方法 248
8.6 邮件接收程序编程实例 249
8.6.1 编程实例Ⅰ 249
动手实践 简单的邮件接收程序 250
8.6.2 编程实例Ⅱ 253
动手实践 Web应用下的邮件接收程序 254
8.6.3 搜索邮件 256
动手实践 搜索并删除符合搜索条件的邮件 258
第9章 邮件的解析与显示 261
9.1 JavaMail解析邮件的流程 262
9.2 解析邮件内容 264
9.2.1 解析文本类型的邮件 264
动手实践 处理文本类型的邮件接收程序 266
9.2.2 解析multipart/related类型的邮件 270
动手实践 使用IE查看包含内嵌资源MIME消息 270
动手实践 解析和显示包含内嵌资源的邮件正文 275
脚下留心 使用IE浏览器解析邮件正文需要注意的问题 280
9.3 解析邮件附件 286
动手实践 解析包含附件的邮件 286
9.4 邮件接收程序的综合实例 293
动手实践 Web应用下的邮件接收程序综合实例 294