Java的Email的接收和发送

本文详细介绍了如何在Java中使用JavaMailUtil类连接163邮箱,包括创建Store对象、设置SSL、接收邮件并处理MimeMessage和Multipart内容。

Java的Email的接收和发送

创建连接Store对象

public class JavaMailUtil {
    private JavaMailUtil() {}

    public static Store createReceiveSession() {
        try {
            //主机民
            String pop3 = "pop.163.com";
            //端口号
            String port = "995";
            //用户名称
            String username = "xxxxx@163.com";
            //用户授权码
            String token = "xxxxxxx";
            //创建一个properties对象
            Properties props = new Properties();
            // 协议名称
            props.setProperty("mail.store.protocol", "pop3");
            // POP3主机名
            props.setProperty("mail.pop3.host", pop3);
            // 端口号
            props.setProperty("mail.pop3.port", port);
            // 启动SSL:
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.port", port);
            //拼接连接Store的URL
            URLName url = new URLName("pop3", pop3, 995, "", username, token);
            //获取Session会话
            Session session = Session.getInstance(props, null);
            //显示调试信息
            session.setDebug(true);
            //创建Store对象
            Store store = new POP3SSLStore(session, url);
            //连接store
            store.connect();
            return store;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
/**
     * 接受邮件
     */
    public void receiveMail() {
        try {
            //创建store
            Store store = JavaMailUtil.createReceiveSession();
            //获取收件箱
            Folder folder = store.getFolder("INBOX");
            //用读写的方式打开
            folder.open(Folder.READ_WRITE);
            //邮件总数
            System.out.println("Total message" + folder.getMessageCount());
            //新邮件总数
            System.out.println("New message" + folder.getNewMessageCount());
            //未读邮件数量
            System.out.println("Unread message" + folder.getUnreadMessageCount());
            //已删除数量
            System.out.println("Deleted message" + folder.getDeletedMessageCount());
            //获取每一封邮件
            Message[] messages = folder.getMessages();
            for (Message message : messages) {
                printMessage((MimeMessage) message);
            }
            folder.close(true);
            store.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void printMessage(MimeMessage msg) throws IOException, MessagingException {
        // 邮件主题:
        System.out.println("Subject: " + MimeUtility.decodeText(msg.getSubject()));
        // 发件人:
        Address[] froms = msg.getFrom();
        InternetAddress address = (InternetAddress) froms[0];
        String personal = address.getPersonal();
        String from = personal == null ? address.getAddress() : (MimeUtility.decodeText(personal) + " <" + address.getAddress() + ">");
        System.out.println("From: " + from);
        System.out.println(msg);
        // 继续打印收件人:
        String body = getBody(msg);
        System.out.println(body);
    }

    public String getBody(Part part) throws MessagingException, IOException {
        if (part.isMimeType("text/*")) {
            // Part是文本:
            return part.getContent().toString();
        }
        if (part.isMimeType("multipart/*")) {
            // Part是一个Multipart对象:
            Multipart multipart = (Multipart) part.getContent();
            // 循环解析每个子Part:
            for (int i = 0; i < multipart.getCount(); i++) {
                BodyPart bodyPart = multipart.getBodyPart(i);
                String body = getBody(bodyPart);
                if (!body.isEmpty()) {
                    return body;
                }
            }
        }
        return "";
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值