JavaMail获取发送后邮件的Uid

Uid是一封邮件的唯一标识,我们在使用IMAP协议获取一封邮件时一般会这样写:
Session session =generSession();
URLName urln = new URLName("imap", mailHost,Integer.valueOf(mailPort), null, "333", "213");
IMAPStore store = (IMAPStore) session.getStore(urln);
store.connect();
IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
Message message = inbox.getMessageByUID(183);

那么我们发邮件时怎么获取到这个Uid呢?

Transport transport = session.getTransport("smtp");
transport.connect(mailHost, senderMail, password);
transport.sendMessage(mimeMessage, InternetAddress.parse(MailService.senderMail));

sendMessage是一个void方法
通过阅读JavaMail的官方文档我们能找到答案:
官方文档地址:
https://javaee.github.io/javamail/docs/api/

image.png

这个方法是将新消息同步到邮箱的一个文件夹,也就是同步之后我们才能拿到Uid
的返回值是AppendUID[]类型

IMAPFolder sentBox = (IMAPFolder) store.getFolder(ExChangeConstant.FolderType.SentMessages);
//设置发送已读
newMessage.setFlag(Flags.Flag.SEEN,true);
sentBox.open(Folder.READ_WRITE);
 AppendUID[] appendUIDS = sentBox.appendUIDMessages(new MimeMessage[]{newMessage});
 if(appendUIDS !=null && appendUIDS.length>0)
 {
     return appendUIDS[0].uid;
 }else
 {
     return null;
 }

将新的消息放回到返回Uid即可,一般都是一次发送一个邮件,数组取0个索引即可

有帮助点个小红心哦
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: ...
    静默虚空阅读 2,184评论 -1 4
  • Spring02-模拟用户登录,发送邮件 一.注解方式注入 bean 对于 bean 的注入,除了使用 xml 配...
    小山居阅读 715评论 0 0
  • 今天是2018年04月28日。在中学时代养下一个习惯,每当要写些什么的时候,总想着在前面加一个具体的日期。 如果说...
    周如花阅读 232评论 3 2
  • 爱,不是什么可能,大概,也许,一旦爱上了,自己心里是十分清楚的。如果对方也接受你的一往情深,也一如既往地爱着你,那...
    李佩兰阅读 776评论 2 6
  • 【智绘妈妈训练营】青春期修炼手册-允许孩子表达情绪 孩子从十一、二岁开始步入青春期,有时烦躁和焦虑占据他们情绪的主...
    智绘妈妈阅读 562评论 0 7