`
Marvin
  • 浏览: 5095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

读书简记《Java邮件开发详解》

阅读更多
DNS......
MX......

自动回复时 不要填from 避免循环回复。

Pop3:可以查邮件总数、已占空间。


电子邮件的RFC822格式:

Return-Path:代表邮件的回复地址,该字段的内容由接收邮件的SMTP服务器填写,接收邮件的SMTP服务器从邮件发送程序发出的mail form命令中获得内容。

Received:通常格式是:Received from A by B for C ,A为发送方,B为接收方,C为收件人的邮箱地址。常常被用来追踪邮件传输的路线和分析邮件的来源。

from:
to:
subject:
date:
cc:
bcc:


邮件的头字段可以扩充成MIME类型。
Content-Type: multipart/mixed;头字段指定编码方法。另外,也定义了邮件头字段的内涵。

MIME消息的头字段具体资源的数据类型和组合消息的组合关系,都是通过消息头中的Content-Type头字段来指定的,格式为“主类型/子类型”的形式出现,主类型有text、image、audio、application、multipart、message等;每个主类型下面又都有好多子类型。

MIME消息可以有三种组合关系:

Multipart/mixed 混合组合 内容可以是文本、附件等等。

Multipart/related 关联组合 如邮件正文要使用HTML代码引用内嵌的图片资源。意思是说某些资源要关联引用另外的资源。

Multipart/alternative 选择组合

注:这三种关系是可以随意嵌套的;其他的头字段都是顾名思义的!


设置内容的另一种方法:
setContent(Object object, String type)
如:setContent(body, “text/html;charset=gb2312”);


另外一种客户端的发信方式:SMTP服务器功能的邮件发送程序

具有SMTP服务器功能的邮件发送程序会根据收件人地址的域名,直接连接到该域的SMTP服务器和进行邮件发送。根本用不到的说……


JNDI:命名式:把对象绑定到context中;目录式:保存对象的属性信息

实际应用中命名式和对象式常常结合使用。



Tomcat可以通过配置文件自己创建javax.mail.Session

META-INF/context.xml
<Context> 
    <Resource name=”mail/session” 
            auth=”Container” 
            type=”javax.mail.Session” 
            mail.smtp.host=”localhost” 
            mail.transport.protool=”smtp” 
            mail.smtp.auth=”true” /> 
</Context> 


在web.xml中说明一下,有资源是被tomcat创建的,如果换了别的应用服务器也要创建。
<resource-ref> 
    <res-ref-name>mail/Session</res-ref-name> 
    <res-type>javax.mail.Session</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref>


不知道书上为什么费那么大劲找个Session出来,还是个没有校验的Session,收发邮件时都得再写用户名密码给服务器。为什么不随便new一个或者从System中调一个呢?感觉基本用不着,我自己写一个properties文件岂不是更好?


JAF

对于通过JAF封装的数据,应用程序通过JAF提供的接口可以完成如下功能:

。访问数据源中的数据

。获知数据源的数据类型

。获知可对数据源进行的各种操作

。用户对数据源执行某种操作时,自动创建执行该操作的软件部件的实例对象

好像是用来封装数据源的(比如:声音文件,java文件),这样的好处是?可以识别文件类型对文件直接操作?不知道,回头再看看。好像是附件用的,ms。



邮件搜索

用于创建逻辑组合关系的类AND、OR、NOT、Comparison

用于创建具体搜索条件的类DATE、CONTENT、HEADER

例:SearchTerm st = new AndTerm(new FromStringTerm(“zx@sina.com”),

new ReceivedDateTerm(ComparisonTerm.EQ, new Date()));

这里主要说明ComparisonTerm类,常用于日期类的比较其中使用留个常量来标识六种不同的操作:EQ(=)、GE(>=)、GT(>)、LE(<=)、LT(<)、NE(!=)


邮件的解析与显示

如果Message的类型是“text/*”直接显示之。如果Message的类型(getContentType())是“multipart/mixed”,调getContent()方法得到Multipart,对其调getCount()看看其中有多少个BodyPart,遍历之;当MIME类型为“text/*”显示之,当MIME是图片、声音或附件等二进制时,调getDataHandler方法得到封装数据的对象,然后调其getInputSteam…….;当MIME类型为“mutlipart/mixed”再次遍历得到其中的BodyPart。

注意:Message.isMimeType(“multipart/*”)这个方法居然可以写通配附?!看看API的解释,果然:If the subType of mimeType is the special character '*', then the subtype is ignored during the comparison.大惊小怪了。


处理内嵌类型的multipart(multipart/related)直接交给IE浏览器去显示就好了:
response.setContentType(”message/rfc822”); 
message.writeTo(response.getOutputStream()); 


 

小结:
    总的来说这本书讲的很基础,前半部分告诉我们什么是email、email是如何收发的及email的格式、着重说明了smtp协议和pop3协议,甚至花了不少力气讲怎么使用协议的命令收发邮件;但第3章邮件的组织结构讲述的还是比较好的;后半部分主要对Javamail进行说明,但是我个人觉得不如IBM的在线教程介绍的实用,主要是例子写的别扭,呵呵。不过里面有一些细节可以起到拓宽知识面的作用。

    感觉此书对开发webmail不大使用,比如对于pop3协议来说,如何标记邮件,如何建立文件夹,如何移动邮件等等很实际的操作都一点也没有提到,讲邮件搜索的时候没有说邮件过滤能不能通过搜索实现或者还是有更好的办法。更深入一点的比如用工厂模式解耦合、使用线程池提高性能等更是只字未提。哎~看来还得再找找。最近看webmail看的很不爽,网上这样的东西也很少,感觉没有一个套路...郁闷~~
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java字符集编码简记

    本文将围绕“Java字符集编码简记”这一主题,深入探讨相关知识点,并结合标签“源码”和“工具”,探讨在实际开发中如何运用和处理字符编码问题。 首先,我们需要理解字符集的概念。字符集是一系列符号的集合,例如...

    java Pattern Matcher的理解简记

    在实际开发中,Pattern和Matcher广泛应用于数据验证、文本搜索替换、日志分析等多个场景。了解并熟练掌握它们,对于提升Java编程能力非常有帮助。 总结一下,Java的Pattern和Matcher提供了强大的正则表达式功能,...

    英语音标简记法-英语学习

    英语音标简记法是学习英语发音的重要工具,它帮助我们准确地读出单词,提升听力和口语能力。本文将详细介绍几种常见的英语音标简记方法,并通过举例帮助理解。 首先,我们来看“去尾法”。这种方法适用于那些以元音...

    练习简记第一期

    ### 练习简记第一期知识点总结 #### 练习1——聚函数 **题目描述:** 本题考察了SQL语言中的聚合函数及其使用规则。具体来说,题目给出了一条SQL查询语句,并询问该语句是否合法以及其含义。 **SQL语句:** ```...

    简记个人博客源码免费分享

    简记个人博客网站源码为博主现有博客网站,前端采用LayUI框架,此分享版本为asp + access。所有功能齐全,欢迎使用。 使用方法:上传至空间或服务器,通过IIS发布网站即可。 演示地址:...

    497476974884240简记.apk

    497476974884240简记.apk

    crc16校验java实现

    从数据头到校验码前的CRC16-CCITT的校验值,遵循大端排序方式的规定。CRC16-CCITT码生成多项式为x16+x12+x5+1,简记式1021。

    usaco课文学习简记1

    【USACO课文学习简记1】 USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,旨在培养高中生的编程和算法能力。这篇学习简记主要涵盖了四个章节,分别是Ad Hoc Problems(杂题)、Complete Search(完全...

    简记个人博客网站源码 v2.10.01.rar

    总之,"简记个人博客网站源码 v2.10.01.rar"是一个综合性的学习资源,涵盖了Web开发的多个层面,无论是对初学者还是经验丰富的开发者,都有很高的学习价值。通过深入研究和实践,可以提升Web开发技能,理解完整的...

    七年级英语音标简记法PPT教案.pptx

    七年级英语音标简记法PPT教案.pptx

    高中化学各简记规律.docx

    【知识点详解】 1. 盐类的溶解性规律: - 钾钠铵盐全部溶于水,意味着KCl, NaCl, NH4Cl等这类盐都能溶解。 - 硝酸盐遇水完全溶解,如Ba(NO3)2, Pb(NO3)2等。 - 硫酸盐中,钡和铅的硫酸盐不溶,如BaSO4, PbSO4。 ...

    [简单]log4jdbc-log4j2配置简记

    标题中的“log4jdbc-log4j2配置简记”指的是在Java开发中使用log4jdbc-log4j2库来监控和记录SQL查询的过程。log4jdbc是一个开源项目,它允许开发者通过日志系统来追踪数据库操作,而log4j2是log4j的升级版,提供了更...

    17年软院计组试卷简记1

    这篇简记涵盖了计算机组成原理中的多个重要知识点,主要包括程序控制I/O、中断嵌套、内存层次结构、平均访问时间计算、磁盘容量计算、指令格式设计、存储器组织、数据依赖性、指令流水线以及缓存操作。 1. **程序...

    高中历史之历史百科简记美国“飞虎队”在云南素材

    高中历史之历史百科简记美国“飞虎队”在云南素材

    CoreJava Interview Question.pdf

    在Java面试准备过程中,掌握面向对象编程(OOP)的基础概念至关重要,这些概念包括抽象(Abstraction)、多态(Polymorphism)、继承(Inheritance)和封装(Encapsulation)。以下是这些概念的详细解析: 1. 面向...

    jsp标准语法中7大动作 简记(经典)

    在JavaServer Pages (JSP) 技术中,七大标准动作是开发动态网页的重要组成部分。这些动作提供了在页面上操作数据、控制流程和与服务器交互的功能。以下是对JSP七大标准动作的详细解释: 1. **** 这个动作用于在...

    Java课程实验代码库-内含源码和说明书(可自己修改).zip

    此外,"Java 简记.md"可能是一个Markdown格式的文档,总结了Java语言的关键概念、语法或技巧,便于快速查阅。"README.md"是常见的项目介绍文件,通常会提供项目概述、安装指南、运行说明等信息。 通过这个代码库,...

    中考知识要点简记归纳之人教版初一数学知识点总结.pdf

    中考知识要点简记归纳之人教版初一数学知识点总结.pdf

    learning:学习简记

    【学习简记】这篇文档主要涵盖了多个IT领域的学习记录,包括设计模式、Java 8、RocketMQ、RPC机制、Scala编程语言以及前端框架Vue.js。接下来,我们将详细探讨这些知识点。 首先,设计模式是软件工程中的一种最佳...

    2013-6-3珠海移动暑假实习面试简记

    这篇博客文章标题为“2013-6-3珠海移动暑假实习面试简记”,从标题我们可以推测,本文作者分享了自己在2013年6月3日参加珠海移动公司暑假实习面试的经历和感悟。这是一篇关于求职经验、面试技巧以及可能遇到的问题的...

Global site tag (gtag.js) - Google Analytics