如何使用JavaMail删除QQ邮件服务器上的邮件

2025-06-29 06:27:30
推荐回答(5个)
回答1:

JavaMail是提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。可以方便地执行一些常用的邮件传输。

如果需要使用JavaMail编程来实现删除QQ邮件服务器上的邮件,可以参考以下代码,在调用deleteMessages方法时,只需要传入邮件服务器地址、端口、邮箱登录用户名、登录密码以及需要删除的邮件主题五个参数即可:

package com.what21.network.mail;
 
import java.util.Properties;
 
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
  
public class EmailMessageRemover {
 
    /**
     * 删除主题中包含subjectToDelete字符串的所有邮件
     * 
     * @param 邮箱服务器地址
     * @param 邮箱服务器端口
     * @param 登录用户名
     * @param 登录密码
     * @param 如果邮件主题包含这个字符串就会对其进行删除操作
     */
    public void deleteMessages(String host, String port, String userName,
            String password, String subjectToDelete) {
        Properties properties = new Properties();
 
        // 邮箱服务器配置
        properties.put("mail.imap.host", host);
        properties.put("mail.imap.port", port);
 
        // SSL 连接配置
        properties.setProperty("mail.imap.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.imap.socketFactory.fallback", "false");
        properties.setProperty("mail.imap.socketFactory.port",
                String.valueOf(port));
 
        Session session = Session.getDefaultInstance(properties);
 
        try {
            // 连接邮箱服务器
            Store store = session.getStore("imap");
            store.connect(userName, password);
 
            // 打开收件箱
            Folder folderInbox = store.getFolder("INBOX");
            folderInbox.open(Folder.READ_WRITE);
 
            // 从服务器获取新邮件
            Message[] arrayMessages = folderInbox.getMessages();
 
            for (int i = 0; i < arrayMessages.length; i++) {
                Message message = arrayMessages[i];
                String subject = message.getSubject();
                if (subject.contains(subjectToDelete)) {
                    //给需要删除的邮件打上标签
                    message.setFlag(Flags.Flag.DELETED, true);
                    System.out.println("Marked DELETE for message: " + subject);
                }
 
            }
 
            // 删除指定的邮件
            boolean expunge = true;
            folderInbox.close(expunge);
 
            // another way:
            // folderInbox.expunge();
            // folderInbox.close(false);
 
            // 断开连接
            store.close();
        } catch (NoSuchProviderException ex) {
            System.out.println("No provider.");
            ex.printStackTrace();
        } catch (MessagingException ex) {
            System.out.println("Could not connect to the message store.");
            ex.printStackTrace();
        }
    }
 
    /**
     * 测试-Gmail邮箱
     * protocol.
     */
    public static void main(String[] args) {
        String host = "imap.gmail.com";
        String port = "993";
        String userName = "your_email";
        String password = "your_password";
        EmailMessageRemover remover = new EmailMessageRemover();
 
        String subjectToDelete = "Newsletter";
        remover.deleteMessages(host, port, userName, password, subjectToDelete);
 
    }
}

回答2:

点击那封邮件里面会有 删除图标 类似垃圾桶的

回答3:

答;直接卸载就好啦 群聚宝宝回答

回答4:

直接卸载就好啦

回答5:

百度传课,请采纳