用javamail以imap协议删除邮件服务器上指定邮件

该博客演示了如何使用JavaMail API通过IMAP协议连接到邮件服务器,并删除特定发件人和主题的邮件。首先,设置邮件服务器的相关属性,然后创建Session实例并获取IMAPStore。接着,打开收件箱,遍历所有邮件,检查发件人和主题是否匹配删除条件,如果匹配则设置DELETED标志。最后,关闭文件夹和存储,实际删除已标记的邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import com.sun.mail.imap.*;

/**
 * @author 刘雪华
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
public class mtest {

    public static void main(String[] args) throws Exception {
        String imapserver = "mail.xxxxx.com";
        String user = "xxxxx";
        String pwd = "dddddd";
        String todelfrom = "zzzzzz@126.com";
        String todelsubject = ".*测试";
        Properties prop = System.getProperties();
        prop.put("mail.imap.host",imapserver);
        prop.put("mail.imap.auth.plain.disable","true");//不知道为什么,以plain方式登录出错,我就禁用它了
        Session mailsession=Session.getInstance(prop,null);
        mailsession.setDebug(false);
        IMAPStore store=(IMAPStore)mailsession.getStore("imap"); 
        store.connect(imapserver,user,pwd);
        IMAPFolder folder =(IMAPFolder) store.getFolder("INBOX");
        boolean delresult = false;
        try{
        folder.open(Folder.READ_WRITE);
        }
        catch(MessagingException ex){
         System.err.println("不能以读写方式打开邮箱!");
        }
        int total = folder.getMessageCount();
        System.out.println("total:"+total);
       
        for(int i=1;i<=total;i++){
            IMAPMessage msg =(IMAPMessage) folder.getMessage(i);
            //System.out.println("----------第"+i+"份---------");
            String gfrom = InternetAddress.toString(msg.getFrom());
            String from = gfrom.substring(gfrom.indexOf("<")+1,gfrom.indexOf(">"));
           
            if(from.equals(todelfrom) && msg.getSubject().matches(todelsubject)){
                msg.setFlag(Flags.Flag.DELETED, true); // set the DELETED flag
                delresult = true;
            }
        }
       
        //System.out.print("未读邮件:"+folder.getUnreadMessageCount());
        folder.close(true); //退出收件箱时,删除做了删除标识的邮件
        if(delresult)
            System.out.println("成功删除该邮件!");
        else
            System.out.println("删除该邮件失败,或该邮件不存在!");
        store.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值