咋取邮件信息?

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) {
            }
        }
    }
}

Java POP3协议可以通过时间或条件取邮件的具体步骤如下: 1. 连接到邮件服务器 使用JavaMail API连接到POP3邮件服务器。您需要提供以下信息: - 邮件服务器的主机名 - POP3端口号(通常是110) - 登录凭据(用户名和密码) 以下是连接到POP3服务器的示例代码: ``` String host = "pop3.example.com"; String username = "yourusername"; String password = "yourpassword"; Properties properties = new Properties(); properties.put("mail.pop3.host", host); properties.put("mail.pop3.port", "110"); Session session = Session.getDefaultInstance(properties); Store store = session.getStore("pop3"); store.connect(host, username, password); ``` 2. 获取邮件列表 使用JavaMail API获取邮件列表。您可以使用`Folder`对象的`getMessages`方法获取邮件列表。以下是获取邮件列表的示例代码: ``` Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); // Get messages from last 24 hours Date oneDayAgo = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); SearchTerm newerThan = new ReceivedDateTerm(ComparisonTerm.GE, oneDayAgo); Message[] messages = inbox.search(newerThan); ``` 上面的代码将获取最近24小时内收到的所有邮件。您可以使用其他搜索条件来获取不同的邮件列表。 3. 处理邮件 遍历邮件列表并处理每个邮件。以下是处理邮件的示例代码: ``` for (Message message : messages) { // Get message details String subject = message.getSubject(); Address[] from = message.getFrom(); Date sentDate = message.getSentDate(); String contentType = message.getContentType(); // Process message body Object content = message.getContent(); if (content instanceof Multipart) { Multipart multipart = (Multipart) content; for (int i = 0; i < multipart.getCount(); i++) { BodyPart bodyPart = multipart.getBodyPart(i); String bodyPartContentType = bodyPart.getContentType(); Object bodyPartContent = bodyPart.getContent(); // Process body part } } else { // Process message body } } ``` 上面的代码将遍历邮件列表并获取每个邮件的详细信息和内容。您可以使用不同的方法来处理邮件内容,具体取决于邮件的类型和格式。 以上就是Java POP3协议通过时间或条件取邮件的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值