现在的位置: 首页 > 综合 > 正文

咋取邮件信息?

2013年07月12日 ⁄ 综合 ⁄ 共 3716字 ⁄ 字号 评论关闭

package test;

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.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.pop3.POP3Folder;

/**
 * 有一封邮件就需要建立一个ReciveMail对象
 */
public class ReciveOneMail {
    private MimeMessage mimeMessage = null;

    private String dateformat = "yyyy-MM-dd HH:mm"; // 默认的日前显示格式

    public ReciveOneMail(MimeMessage mimeMessage) {
        this.mimeMessage = mimeMessage;
    }

    public void setMimeMessage(MimeMessage mimeMessage) {
        this.mimeMessage = mimeMessage;
    }

    /**
     * 获得发件人的地址和姓名
     */
    public String getFrom() throws Exception {
        InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();
        String from = address[0].getAddress();
        if (from == null)
            from = "";
        String personal = address[0].getPersonal(); // 发件人的姓名
        if (personal == null)
            personal = "";
        String fromaddr = personal + "<" + from + ">"; // 发件人的地址
        return fromaddr;
    }

    /**
     * 获得邮件主题
     */
    public String getSubject() throws MessagingException {
        String subject = "";
        try {
            subject = mimeMessage.getSubject();
            String header = ((MimeMessage) mimeMessage).getHeader("SUBJECT")[0];
            if ((header.toLowerCase().indexOf("=?")) > 0) {
                subject = new String((subject.getBytes("ISO-8859-1")), "gb2312");
            }

            if (subject == null)
                subject = "";
        } catch (Exception exce) {
        }
        return subject;
    }

    /**
     * 获得邮件发送日期
     */
    public String getSentDate() throws Exception {
        Date sentdate = mimeMessage.getSentDate();
        SimpleDateFormat format = new SimpleDateFormat(dateformat);
        return format.format(sentdate);
    }

    /**
     * 获得此邮件的Message-ID
     */
    public String getMessageId() throws MessagingException {
        return mimeMessage.getMessageID();
    }

    /**
     * 【设置日期显示格式】
     */
    public void setDateFormat(String format) throws Exception {
        this.dateformat = format;
    }

    /**
     * PraseMimeMessage类测试
     */
    public static void main(String args[]) throws Exception {
        Properties props = System.getProperties();
        props.put("mail.smtp.host", "mail.socix.com");
        props.put("mail.smtp.auth", "true");

        URLName url = new URLName("pop3", "mail.socix.com", 110, null,
                "xcf@socix.com", "111111");
        System.out.println("log on!");
        Session session = Session.getInstance(System.getProperties(), null);
        Store store = session.getStore(url);
        POP3Folder inbox = null;
        try {
            store.connect();
            System.out.println("store connected!");
            inbox = (POP3Folder) store.getFolder("INBOX");
            inbox.open(Folder.READ_ONLY);
            Message[] message = inbox.getMessages();
            for (int i = 0; i < message.length; i++) {
                System.out.println("Message " + i + " UID: "
                        + inbox.getUID(message[i]));
            }
            System.out.println("fetched!");
            for (int i = 0; i < message.length; i++) {
                ReciveOneMail pmm = new ReciveOneMail((MimeMessage) message[i]);
                System.out.println("第" + (i + 1) + "封");
                System.out.println("======================");
                System.out.println("Message " + (i + 1) + " 主题: "
                        + pmm.getSubject()); // 获取主题
                System.out.println("Message " + (i + 1) + " 日期: "
                        + pmm.getSentDate()); // 获取邮件发送日期
                System.out.println("Message " + (i + 1) + " 发件人: "
                        + pmm.getFrom()); // 获取发件人和地址
                System.out.println("Message " + (i + 1) + " UID: "
                        + inbox.getUID(message[i]));
            }
        } finally {
            try {
                inbox.close(false);
            } catch (Exception e) {
            }
            try {
                store.close();
            } catch (Exception e) {
            }
        }
    }
}

抱歉!评论已关闭.