解析一个简单的只有html超链接的邮件
例如,邮件内容如下:
实现解析这个简单的邮件:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置response回传的类型与编码
response.setContentType("text/html;chrset=utf-8");
//设置编码
response.setCharacterEncoding("utf-8");
//创建回写到浏览器的输出流,写字符常用
PrintWriter writer = response.getWriter();
//pop3服务器
String pop3 = "pop3.sina.com";
//邮件收取协议
String protocol = "pop3";
//账户
String user="*******@sina.com";
//密码
String password="*********";
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", protocol);
properties.setProperty("mail.pop3.host", pop3);
//创建邮件的环境对象session
Session session = Session.getDefaultInstance(properties);
session.setDebug(false);
try { //创建Store对象,相当于邮局
Store store = session.getStore(protocol);
store.connect(user, password);
//创建folder对象,相当于邮局中你的邮箱
Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_WRITE);
//创建message对象
Message[] messages = folder.getMessages();
for (int i = 0; i < messages.length; i++) {
//打印邮件的基本信息
writer.println("第"+(i+1)+"封邮件<br/>");
writer.println("发件人: "+messages[i].getFrom().toString()+"<br/>");
writer.println("主题: "+messages[i].getSubject()+"<br/>");
//判断message的类型 if(messages[i].isMimeType("multipart/**")){
Multipart multipart = (Multipart) messages[i].getContent();
int bodyNum = multipart.getCount();
for (int j = 0; j < bodyNum; j++) {
//判断message中multipart中的bodypart的类型 if(multipart.getBodyPart(j).isMimeType("text/html")){
String content =(String) multipart.getBodyPart(j).getContent();
writer.println("邮件内容: "+content+"<br/>");
writer.println("------------------------<br/>");
}
}
}else{
writer.println("不支持的邮件类型<br/>");
}
}
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
测试结果如下:
这样就可以完成简单邮件的解析了。