一、 发邮件
1) 获取Session
i) 实行一个Authentication类的子类,实行里面的public PasswordAuthentication getPasswordAuthentication()方法
ii) New一个上面类的实例,设置用户名和密码
iii) New一个Properties对象,设置mail.smtp.host and mail.smtp.auth属性
iv) 同过Session的静态方法,获取一个Session实例
2) 生成Message
i) 没有附件的邮件
第一步:new一个MimeMessage实例(根据Session)
第二步:给Message实例设置subject、text属性
ii) 有附件的邮件
第一步:根据Session new一个MimeMessage实例(Message)
第二步:设置Message subject属性
第三步:new一个MimeBodyPart实例 和 Mulipart(MimeMulipart)实例
第四步:给MimeBodyPart实例设置邮件文本内容
第五步:将MimeBodyPart实例,添加到Mulipart实例
第六步:根据附件数循环:
New MimeBodyPart实例
获取FileDatasource
将FileDatasource设置到MimeBodyPart
设置MimeBodyPart的文件名
将MimeBodyPart添加到 Mulipart
第七步:将Mulipart设置成MimeMessage的内容
3) 发送邮件
i) 设置Message的fromAddress,toAddress,ccAddress,bccAddress
ii) Transport发送邮件
二、 收邮件
1)new Properties实例,设置mail.pop3.host 的值
2)获取Session实例
3)根据Session,获取Store实例
4)连接store
5)获取Index文件夹
6)打开文件夹
7)获取文件夹里面所有Message
8)用FetchProfile优化Message的查找
FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
profile.add(FetchProfile.Item.FLAGS);
profile.add("X-Mailer");
inbox.fetch(msg, profile);
9)判断Message的MimeType类型如果是text/*类型,直接可以从Message从获取邮件from 地址、标题和内容,否则执行下面的步骤
10)从Message中获取Multipart
11)遍历Multipart中的BodyPart
12)判断bodyPart的Disposition是否是Part.ATTACHMENT
13)如果不是,直接获取bodyPart里面的content
14)否则获取bodyPart的文件名和文件流(inputstream),将流写入本地文件,实现附件的下载
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)