上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式、规范复杂得很。不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏览器之前明确地指定该数据流属于哪种数据类型即可,之后一切的解析操作由浏览器自动帮我们完成。下面这张图可以很好的说明解析邮件的步骤
1、调用Message对象的getFrom、getSubject等方法,可以得到邮件的发件人和主题等信息,调用getContentType方法得到邮件的类型;
2、通过Message.getContentType方法的返回值判断邮件类型,并调用Message.getContent方法得到邮件内容。如果邮件类型为"text/plain"或者"text/html",表示邮件内容为纯文本,此时调用Message对象的getContent方法得到邮件内容,然后将返回对象的类型转换成String输出给显示软件即可。如果邮件类型为"multipart if (!bp.isMimeType("multipart/mixed") && bp.getDisposition() == null) { response.setContentType("message/rfc822"); bp.writeTo(sos); } } } } catch (Exception e) { e.printStackTrace(); } } }
用于显示邮件正文
HandleAttact.java
package mail;
import java.io.IOException;
import java.io.InputStream;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class HandleAttach extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
HttpSession session = request.getSession();
ServletOutputStream out = response.getOutputStream();
int msgnum = Integer.parseInt(request.getParameter("msgnum"));
int bodynum = Integer.parseInt(request.getParameter("bodynum"));
String filename = request.getParameter("filename");
Folder folder = (Folder) session.getAttribute("folder");
try {
Message msg = folder.getMessage(msgnum);
// 将消息头类型设置为附件类型
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
Multipart multi = (Multipart) msg.getContent();
BodyPart bodyPart = multi.getBodyPart(bodynum);
InputStream is = bodyPart.getInputStream();
int c = 0;
while ((c = is.read()) != -1) {
out.write(c);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
用于处理附件
web.xml
mailDemo index.html index.htm index.jsp default.html default.htm default.jsp DisplayHead mail.DisplayHead DisplayHead /DisplayHead DisplayContent mail.DisplayContent DisplayContent /DisplayContent HandleAttach mail.HandleAttach HandleAttach /HandleAttach
首先启动tomcat服务器,然后在浏览器中输入http://localhost:8080/mailDemo/index.html
输入用户名跟密码(这里需要填写授权码,什么是授权码,它又是如何设置?)
列出了邮件夹中所有的邮件
点击查看邮件链接
点击附件后面的文件名称即可下载对应附件。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



