51,409
社区成员
发帖
与我相关
我的任务
分享
package com.isoftstone.dao;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
/**
* 测试邮件收件功能
* @author Administrator
*
*/
public class ReciveOneMail {
private MimeMessage mimeMessage = null;
private StringBuffer bodyText = new StringBuffer();// 存放邮件内容
private String dateformat = "yy-MM-dd HH:mm"; // 默认的日前显示格式
public ReciveOneMail(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
}
public void setMimeMessage(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
}
// 获取发件人和地址
public String getFrom() throws MessagingException{
InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom();
String from = address[0].getAddress();
if(null == from){
from = "";
}
String personal = address[0].getPersonal();
if(null == personal){
personal = "";
}
String fromaddr = personal+"<"+from+">";
return fromaddr;
}
// 获取邮件主题
public String getSubject(){
String subject = "";
try {
subject = MimeUtility.decodeText(mimeMessage.getSubject());
if(null == subject){
subject = "";
}
} catch (Exception e) {
e.printStackTrace();
}
return subject;
}
// 获取邮件发送日期
public String getSendDate() throws MessagingException{
Date sendDate = mimeMessage.getSentDate();
SimpleDateFormat format = new SimpleDateFormat(dateformat);
return format.format(sendDate);
}
// 获取邮件正文内容
public String getBodyText(){
return bodyText.toString();
}
// 获得邮件message Id
public String getMessageId() throws MessagingException{
return mimeMessage.getMessageID();
}
// 设置日期显示格式
public void setDateFormat(String format){
this.dateformat = format;
}
//解析邮件 把邮件内容保存到Stringbudder中
public void getMailContent(Part part) throws MessagingException, IOException{
String contentType = part.getContentType();// 获取邮件内容类型
int nameIndex = contentType.indexOf("name");// 得到邮件类型名称
boolean conname = false;
if(nameIndex != -1){
conname = true;
}
System.out.println("内容类型:"+contentType);
if(part.isMimeType("text/plain") && !conname){
bodyText.append((String) part.getContent());
}else if(part.isMimeType("text/html") && !conname){
bodyText.append((String) part.getContent());
}else if(part.isMimeType("multipart/*") && !conname){
Multipart multipart = (Multipart)part.getContent();
int counts = multipart.getCount();
for (int i = 0; i < counts; i++) {
getMailContent(multipart.getBodyPart(i));
}
}else if(part.isMimeType("message/rfc822")){
getMailContent((Part)part.getContent());
}
}
// 测试收件功能
public static void main(String[] args) throws Exception {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.10.40.15.45");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,null);
URLName urln = new URLName("pop3","pop3.10.40.15.45",110,null,"w75004","wanggeng");
Store store = session.getStore(urln);
store.connect();
Folder folder = store.getFolder("INBOX");
Message message[] = folder.getMessages();
System.out.println("Messages's length:" +message.length);
ReciveOneMail pmm = null;
for (int i = 0; i < message.length; i++) {
System.out.println(">>>>>>>>>>>>>>>>>>开始打印>>>>>>>>>>>>>>>>>>>>>>");
pmm = new ReciveOneMail((MimeMessage)message[i]);
System.out.println("Mession:"+i+"邮件主题"+pmm.getSubject());
System.out.println("Mession:"+i+"发送时间"+pmm.getSendDate());
System.out.println("Mession:"+i+"发件人和地址"+pmm.getFrom());
pmm.setDateFormat("yy年MM月dd日 HH:mm");
System.out.println("Mession:"+i+"发送时间"+pmm.getSendDate());
System.out.println("Mession:" +i+"邮件标识ID"+pmm.getMessageId());
//获取邮件内容
pmm.getMailContent((Part)message[i]);
System.out.println("Mession:"+i+"bodycontent: \r\n"+pmm.getBodyText());
}
}
}
props.put("mail.smtp.auth", "true"); EmailAuthenImpl auth = new EmailAuthenImpl(userName, password);
// 获得系统环境
Properties ps = System.getProperties();
// 设置登录邮件服务器的主机地址
ps.put("mail.smtp.host", host);
// 设置登录邮件服务器的主机端口
ps.put("mail.smtp.port", port);
// 设置邮件服务器的登录方式(必须通过授权)
ps.put("mail.smtp.auth", "true");
// 连接超时时间
ps.put("mail.smtp.connectiontimeout", 30 * 60 * 1000);
// IO超时时间
ps.put("mail.smtp.timeout", 30 * 60 * 1000);
session = Session.getDefaultInstance(ps, auth);