Mail.OutLook.Receive@Java

627 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情 >>

问题描述: 最近接手了一个新的需求,之前也是没做过,就产生了一个大大的问号,发邮件的场景有很多,不知道大家有没有遇到接收邮件,做一些邮件的处理。我这个需求就是取我电子邮箱中的邮件去做一些业务处理,我们用的是微软的Office365 的outlook邮箱,这里我就先从outlook的邮件接收做示例。

电子邮件传输的协议分三种:POP, IMAP, And SMTP,它们都隶属于TCP/IP协议簇,POP和IMAP用来做电子邮件的接收处理,而SMTP用作发送电子邮件的协议,负责将邮件从一个“邮局”传送到另一个“邮局”。
微软官方给出的三种协议的Setting如下:

Email ProviderIMAP SettingsPOP SettingsSMTP Settings
Microsoft 365
Outlook
Hotmail
Live.com
Server: outlook.office365.com Port: 993
Encryption: SSL/TLS
Server: outlook.office365.com
Port: 995
Encryption: SSL/TLS
Server: smtp.office365.com

Port: 587Encryption: STARTTLS
MSNServer: imap-mail.outlook.com
Port: 993
Encryption: SSL/TLS
Server: pop-mail.outlook.com
Port: 995
Encryption: SSL/TLS
Server: smtp-mail.outlook.com
Port: 587
Encryption: STARTTLS

以下是我是在这个开发中使用到的电子邮件server连接的建立以及读取电子邮件的方式:

 // 配置连接信息
    Properties properties = new Properties();
    properties.put("mail.store.protocol", "imaps");
    properties.put("mail.imap.host", "outlook.office365.com");
    properties.put("mail.imap.port", 993);
    properties.put("mail.imap.starttls.enable", "true");
    Session emailSession = Session.getDefaultInstance(properties);
//  emailSession.setDebug(true);
    Store store = emailSession.getStore("imaps");
//  host\username\password
    store.connect("outlook.office365.com","peate.zhu@XXX.com", "XXX.2022");
    //获取到邮箱默认接收的文件夹
    Folder emailFolder = store.getFolder("INBOX");
//  Folder.READ_ONLY 打开并将其设置为只读状态
//  Folder.READ_WRITE为开启读写状态 
    emailFolder.open(Folder.READ_ONLY);
//  Message[] 为该默认文件夹下的所有邮件数组
    Message[] messages = emailFolder.getMessages();

希望这简简单单的开发中总结 能给你最实用的帮助,给你节省大把时间,用最核心的代码干最有用的事,后边可以给大家更新使用SMTP发送邮件等一些实用的技巧,包括我们常用的项目管理工具的一些便于自助开发的东西。不断探索,知识共享。掘金 倔劲,干就完了!