在上一篇文章JavaMail:利用Tomcat和浏览器解析邮件内容中只是简单地实现了把邮件正文部分的文本内容输出到浏览器中进行解析显示。当然,需要用到 Tomcat 服务器。

其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式、规范复杂得很。幸运的是,我们所用的浏览器一定内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏览器之前明确地指定该数据流属于哪种数据类型即可,之后一切的解析操作由浏览器自动帮我们完成。

现在我们想要像 Outlook 客户端或者登录网页邮箱那样子接收、查看邮件,而这些邮件中可能包含附件、正文中可能内嵌图片、音频等等。好吧,我们来实现一下吧。

程序结构:

1、mailboxLogin.html 文件用于提供一个用户登录界面,由用户填写 POP3 服务器主机名、用户名和密码;

2、connectServer.jsp 文件用于获取登录界面中的登录信息,并连接到 POP3 服务器,还要读取显示出邮箱中的所有邮件列表,再提供一个查看邮件详细内容的超链接;

3、showMails.jsp 文件用于将一个 Web 页面分成两帧,目的在上一篇文章中讲过,就是分别指定不同的 MIME 消息头类型来让浏览器解析、显示出邮件头内容和邮件正文内容;

4、ShowHeader.java 文件是处理邮件头内容的 Servlet 程序;

5、ShowContent.java 文件时处理邮件正文内容的 Servlet 程序;

6、HandleAttachments.java 文件是当从 ShowHeader.java 程序处理邮件头内容时,若发现该邮件包含附件,则交给 HandleAttachments.java 这个 Servlet 程序进行处理,它能够在邮件头中给出附件的文件名、超链接,所以用户可以点击下载。这是上篇文章中所缺乏的,也是这个程序实现中的重点!

7、web.xml 文件用于根据前面的 Servlet 程序来部署、配置相关的映射信息。

好吧,讲了那么多让人不知所云的东西,来点截图啊、代码啊最让我兴奋的了,因为截图、所有代码我保证都是完整的(或许自己尝试一下可以弄出更多的截图),嘻嘻…

我们依然需要 Tomcat 这个服务器,关于 JSP 、Servlet 编程技术、部署配置映射信息等方面的内容就不能多讲了。这里先说明,我们要登录的邮箱时testhao@126.com,用户名为 testhao ,密码为 123456,里面的邮件跟上篇文章重点截图一样,不过我自己多发送了一封包含3封附件的邮件哦,如下:(更多精彩截图,请继续看下文)

程序代码:

mailboxLogin.html

邮箱登录页面

POP3服务器主机名:

邮箱用户名:

邮箱密码:

java 解析邮件_JavaMail:在Web应用下完整接收、解析复杂邮件相关推荐

  1. java 发送邮件 格式_JavaMail发送邮件后再通过JavaMail接收格式问题

    关于 JavaMail 如何发送邮件这里就不赘述了,网上有很多例子.其中最复杂的邮件发送莫过于 html邮件包含内嵌图片以及附件,最近项目中的这项功能我在发送邮件时就出现了一系列问题. 我在使用 Ja ...

  2. 源码解析 使用tomcat作为web容器时,用到的外观模式

    源码解析 使用tomcat作为web容器时,接收浏览器发送过来的请求, tomcat会将请求信息封装成ServletRequest对象, 如下图①处对象. 但是大家想想ServletRequest是一 ...

  3. 基于Java技术的Web环境下分布式数据库互操作性的实现

                作者:李炽明 莫倩 徐明 1 JDBC工作原理 JDBC(Java Database Connectivity)是1个Sun公司注册了的商标,代表用来执行SQL语句的Java语 ...

  4. java mail 监听邮件_javamail – IMAP messageChangedListener()没有被触发

    我正在使用 java mail API实现IMAP客户端.我想要的是通知邮件计数和邮件的更改(读/未读等).为此,我为打开的IMAP文件夹写了两个监听器,如下所示: IMAPStore imapSto ...

  5. 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线...

    重温.NET下Assembly的加载过程 最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程.虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现 ...

  6. axis2 json_带有Java和Axis2的JSON Web服务

    axis2 json 我最近遇到一位客户,要求我使用Java Web服务重建其旧产品. 他们希望它模块化并且易于使用. 我想到的第一件事是使用宁静的方法. 但是让我烦恼的是,Java宁静的方法是使用X ...

  7. 带有Java和Axis2的JSON Web服务

    我最近遇到一位客户,要求我使用Java Web服务重建其旧产品. 他们希望它模块化并且易于使用. 我想到的第一件事是使用宁静的方法. 但是让我烦恼的是,Java宁静的方法是使用XML !,我更喜欢一种 ...

  8. Java POJO Bean 对象与 Web Form 表单的自动装配

    PS: 我一直在找寻为什么 struts2有自动将form字段和getter setter 自动 匹配的功能, 这篇文章解答了我的疑惑 深度剖析:Java POJO Bean 对象与 Web Form ...

  9. 解析带有命名空间问题web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  10. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

最新文章

  1. 百度拿不到Big Data资源,7h删抓紧时间!!
  2. javapanel根据内部组件_[译]避免在unmounted组件上调用setState
  3. 分布式服务架构下的混沌工程实践
  4. 史上最全的前端开发面试题(含详细答案)
  5. [Unity] 战斗系统学习 6:构建 TPS 框架 2
  6. ElasticSearch配置详解
  7. 【转】雷军自曝创业第一年:掏自己的钱创业成功率最高
  8. automaticallyAdjustsScrollViewInsets 标签栏不正常显示
  9. [算法 笔记]2014年 去哪儿网 开发笔试题
  10. python系统路径_python中os模块简单了解(系统命令和路径的获取)
  11. 大数据爬虫的一些小目标
  12. 无限火力无法连接到服务器,“无限火力”回来啦!连拳头都要世界聚焦于你 全新7777装备即将上线!...
  13. 运维工程师是桥的护栏_高速公路护栏有哪几种类型?
  14. 词消歧算法:使用WordNet和Lesk算法进行英文消歧义
  15. 一个开源音乐播放器,低仿QQ音乐!
  16. 蓝牙设备改参数教程_修改蓝牙设备的名称
  17. 如何安装python自带的pip_python自带的pip在哪里
  18. 白翔团队新作:借助CLIP完成场景文字检测
  19. 基于视频的电熔镁炉工况识别系统→6.电熔镁炉服务器设计
  20. RabbitMQ实战运用(三)——安装与配置

热门文章

  1. lte tm模式_请教大家个问题,LTE传输模式TM1-TM8中哪种属于MIM.. - 通信技术你问我答 - 纯技术讨论者的天地 - Powered by C114...
  2. 从JPG和JPEG图片获取压缩比详细教程
  3. python学习笔记(汇总)
  4. android 模拟menu键点击事件,android处理Back键Home键和Menu键事件(转)
  5. 迭代回溯的图最大团问题(可得到多组最优解)
  6. 雷达一维距离像怎么用matlab仿真出来,雷达目标识别之一维距离像的学习
  7. android全局屏幕自动旋转,Android屏幕旋转
  8. Docker 错误 “port is already allocated” 解决方法
  9. 南邮计算机学院考研论坛,考南邮的心得,但愿对大家有所帮助!!!
  10. JAVA对接飞猪旅行_飞猪 - 开放平台