300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)

javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)

时间:2023-03-21 02:03:56

相关推荐

javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)

前言:

JavaMail jar包下载地址:/products/javamail/downloads/index.html

本章是讲解javamail的最后一篇了,阅读本章节前建议阅读之前章节,因为这章是在之前的基础上增加的业务方法,不看之前的可能有点云里雾里。

邮件标志:是指给邮件message对象设置一个Flag内部类里的属性字段,标志类型会在代码中给出。

本章节演示的是给邮件一个删除标志,来实现邮件的删除操作。

代码走起//

MarkEmailFunction 标记邮件业务类

package com.java.mail;import java.io.UnsupportedEncodingException;import javax.mail.Flags;import javax.mail.Flags.Flag;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;/*** 标记邮件业务类(包涵删除)*/public class MarkEmailFunction extends LookEmailService{/*** 因为我继承了查看业务类,所以这里我在获取邮件的时候可以直接调用父类的方法进行获取,减少代码量* @throws UnsupportedEncodingException* @throws MessagingException*/public MarkEmailFunction() throws UnsupportedEncodingException,MessagingException {}/*** 标记邮件方法(其实在上一章有接触,就是Folder.READ_ONLY以只读方式打开邮件夹)* 每个邮件消息 message都有对应的实时标志,有服务器定义的,也有用户自定义的* 服务器预定义的都在内部类Flags.Flag里以常量方式存在* @param flag 状态标识* @throws MessagingException * @throws UnsupportedEncodingException */public void markEmail(Flag flag) throws UnsupportedEncodingException, MessagingException {/** 拿到一封邮件,这里获取的是收件箱内最新一封邮件,做删除操作,其他方法自行测试 */Message message = this.getMessageByIndex(this.getAllMessage().length);message.setFlag(Flags.Flag.DELETED, true); // true为设置,false为取消/*** 在源码中找到的标识,仅供参考* ANSWERED 回复* DELETED 删除* DRAFT 草稿* FLAGGED 已读(个人理解)* RECENT..* SEEN ..* USER ..(还没明白-.-)*/// 重要步骤,现在邮件还没真正删除,只是有一个删除的标记,你需要像刷新流一样刷新邮件夹// 上节说到false不刷新,true刷新,此时邮件删除(重要邮件请慎重操作)this.getFolder().close(true); }/*** 这里需要重写父类的初始化文件夹方法,因为上一章节为了安全性,我们是以只读方式打开邮件夹的* 这里要把上一章节父类的属性改为protected,子类可访问的(这里不再贴出代码)*/@Overridepublic void initStoreAndFolder() throws UnsupportedEncodingException,MessagingException {this.emailService = new EmailServiceEnity("", "",EmailServiceEnity.MAIL_PROTOCOL_POP3);this.store = emailService.getSession().getStore(emailService.getMailProtocol());store.connect(emailService.getHostPort(), EmailServiceEnity.username, EmailServiceEnity.password);folder = store.getFolder("INBOX");// 上面方法不再复述,不懂的看上一章节,这里只需更改下面一个打开方法为READ_WRITEfolder.open(Folder.READ_WRITE);}/**** 简单main方法测试 ****/public static void main(String[] args) {MarkEmailFunction mark;try {mark = new MarkEmailFunction();// 注意Flag为静态内部类,要用外部类来获取mark.markEmail(Flags.Flag.DELETED);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}}}

总结:

邮件的标记要建立的查看的基础上,所以直接继承了查看业务类

要对邮件进行删除操作时要以读写(READ_WRITE)方式打开Folder邮件夹

对邮件添加标记后,记得在关闭邮件夹的时候刷新邮件夹(具体为参数传:true)

只要之前的都练习过,在这里就不啰嗦了,……..此处省略…….1w字………

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。