使用javamail api从gmail服务器删除电子邮件 导入com.sun.mail.pop3.pop3文件夹; 导入com.sun.mail.pop3.POP3SSLStore; 导入javax.mail.Session; 导入javax.mail.Flags; 导入javax.mail.Message; 导入java.util.Date; 导入java.text.simpleDataFormat; 导入java.util.StringTokenizer; 导入javax.mail.internet.mimessage; 导入java.io.FileOutputStream; 导入java.io.File; 导入java.io.ObjectOutputStream; 导入java.io.Writer; 导入java.net.URL; 导入javax.mail.Transport; 导入javax.mail.internet.InternetAddress; 导入javax.mail.Store; 导入javax.mail.Folder; 导入java.util.Properties; 导入javax.mail.URLName; /** *此类负责删除电子邮件。 * *@作者。 */公共类删除邮件{ 私有静态最终字符串SMTP\u HOST\u NAME=“SMTP.gmail.com”; 专用静态最终int SMTP_主机_端口=465; 私有静态最终字符串SMTP\U AUTH\U USER=”examplemail@gmail.com"; 私有静态最终字符串SMTP_AUTH_PWD=“examplepassword”; 非公开会议; 私人Pop3ssl商店; 私有字符串用户名; 私有字符串密码; 私有POP3文件夹; url名称url; 公共静态void main(字符串[]args)引发异常{ 新建deletemail().test(); } public void test()引发异常{ 试一试{ Properties pop3props=新属性(); //---------------------------------------------- 字符串SSL_FACTORY=“javax.net.SSL.SSLSocketFactory”; Properties pop3Props=新属性(); pop3Props.setProperty(“mail.pop3.socketFactory.class”,SSL_工厂); pop3Props.setProperty(“mail.pop3.socketFactory.fallback”、“false”); pop3Props.setProperty(“mail.pop3.port”,“995”); pop3Props.setProperty(“mail.pop3.socketFactory.port”,“995”); 用户名=”examplemail@gmail.com"; password=“examplepassword”; url=新的url名称(“pop3”,“pop.gmail.com”,995,”,用户名,密码); session=session.getInstance(pop3Props,null); store=新的POP3SSLSStore(会话,url); store.connect(); folder=(POP3Folder)store.getFolder(“收件箱”); 文件夹。打开(文件夹。读写); Message Message[]=folder.getMessages(); System.out.println(消息长度); 对于(int i=0,n=message.length;i

使用javamail api从gmail服务器删除电子邮件 导入com.sun.mail.pop3.pop3文件夹; 导入com.sun.mail.pop3.POP3SSLStore; 导入javax.mail.Session; 导入javax.mail.Flags; 导入javax.mail.Message; 导入java.util.Date; 导入java.text.simpleDataFormat; 导入java.util.StringTokenizer; 导入javax.mail.internet.mimessage; 导入java.io.FileOutputStream; 导入java.io.File; 导入java.io.ObjectOutputStream; 导入java.io.Writer; 导入java.net.URL; 导入javax.mail.Transport; 导入javax.mail.internet.InternetAddress; 导入javax.mail.Store; 导入javax.mail.Folder; 导入java.util.Properties; 导入javax.mail.URLName; /** *此类负责删除电子邮件。 * *@作者。 */公共类删除邮件{ 私有静态最终字符串SMTP\u HOST\u NAME=“SMTP.gmail.com”; 专用静态最终int SMTP_主机_端口=465; 私有静态最终字符串SMTP\U AUTH\U USER=”examplemail@gmail.com"; 私有静态最终字符串SMTP_AUTH_PWD=“examplepassword”; 非公开会议; 私人Pop3ssl商店; 私有字符串用户名; 私有字符串密码; 私有POP3文件夹; url名称url; 公共静态void main(字符串[]args)引发异常{ 新建deletemail().test(); } public void test()引发异常{ 试一试{ Properties pop3props=新属性(); //---------------------------------------------- 字符串SSL_FACTORY=“javax.net.SSL.SSLSocketFactory”; Properties pop3Props=新属性(); pop3Props.setProperty(“mail.pop3.socketFactory.class”,SSL_工厂); pop3Props.setProperty(“mail.pop3.socketFactory.fallback”、“false”); pop3Props.setProperty(“mail.pop3.port”,“995”); pop3Props.setProperty(“mail.pop3.socketFactory.port”,“995”); 用户名=”examplemail@gmail.com"; password=“examplepassword”; url=新的url名称(“pop3”,“pop.gmail.com”,995,”,用户名,密码); session=session.getInstance(pop3Props,null); store=新的POP3SSLSStore(会话,url); store.connect(); folder=(POP3Folder)store.getFolder(“收件箱”); 文件夹。打开(文件夹。读写); Message Message[]=folder.getMessages(); System.out.println(消息长度); 对于(int i=0,n=message.length;i,java,jakarta-ee,jakarta-mail,Java,Jakarta Ee,Jakarta Mail,这可能解释了发生的情况。问题在于GMail没有遵循IMAP删除电子邮件的惯例 根据法律,你必须: 用标志标记邮件[Gmail]/Trash 导航到该标签,并将该电子邮件的标志DELETED设置为true 关闭文件夹(删除标志设置为true) 假设您在阵列中有电子邮件,您必须执行以下操作: Folder-trashFolder=this.open(“[Gmail]/Trash”,true); 用于(消息m:消息){ m、 getFolder().copyMessages(新邮件[]{m},垃圾文件

这可能解释了发生的情况。

问题在于GMail没有遵循IMAP删除电子邮件的惯例

根据法律,你必须:

  • 用标志标记邮件
    [Gmail]/Trash
  • 导航到该标签,并将该电子邮件的标志
    DELETED
    设置为true
  • 关闭文件夹(删除标志设置为true)
  • 假设您在阵列中有电子邮件,您必须执行以下操作:

    Folder-trashFolder=this.open(“[Gmail]/Trash”,true);
    用于(消息m:消息){
    m、 getFolder().copyMessages(新邮件[]{m},垃圾文件夹);
    }
    此.close(垃圾文件夹,true);
    垃圾文件夹=this.open(“[Gmail]/Trash”,true);
    对于(邮件m:trashFolder.getMessages()){
    m、 setFlag(Flags.Flag.DELETED,true);
    }
    此.close(垃圾文件夹,true);
    
    您可能想从帖子中删除您的电子邮件地址和密码对不起,那么我不知道。协议跟踪是否提供了任何线索?请注意,您可以按照以下说明简化代码:
    import com.sun.mail.pop3.POP3Folder;
    import com.sun.mail.pop3.POP3SSLStore;
    import javax.mail.Session;
    import javax.mail.Flags;
    import javax.mail.Message;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.StringTokenizer;
    import javax.mail.internet.MimeMessage;
    import java.io.FileOutputStream;
    import java.io.File;
    import java.io.ObjectOutputStream;
    import java.io.Writer;
    import java.net.URL;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.Store;
    import javax.mail.Folder;
    import java.util.Properties;
    import javax.mail.URLName;
    
    
    /**
     * This class is responsible for deleting e-mails.
     *
     * @author <a href="mailto:fzammetti@omnytex.com">Frank W. Zammetti</a>.
     */public class deletemail {
    
        private static final String SMTP_HOST_NAME = "smtp.gmail.com";
        private static final int SMTP_HOST_PORT = 465;
        private static final String SMTP_AUTH_USER = "examplemail@gmail.com";
        private static final String SMTP_AUTH_PWD  = "examplepassword";
     private Session session;
        private POP3SSLStore store;
        private String username;
        private String password;
        private POP3Folder folder;
            URLName  url;
        public static void main(String[] args) throws Exception{
           new deletemail().test();
        }
    
        public void test() throws Exception{
           try{
            Properties pop3props = new Properties();
            //----------------------------------------------
              String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
            Properties pop3Props = new Properties();
            pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
            pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
            pop3Props.setProperty("mail.pop3.port", "995");
            pop3Props.setProperty("mail.pop3.socketFactory.port", "995");
            username="examplemail@gmail.com";
            password="examplepassword";
            url = new URLName("pop3", "pop.gmail.com", 995, "", username, password);
            session = Session.getInstance(pop3Props, null);
            store = new POP3SSLStore(session, url);
            store.connect();
            folder = (POP3Folder) store.getFolder("INBOX");
            folder.open(Folder.READ_WRITE);
           Message message[] = folder.getMessages();
             System.out.println(message.length);
        for (int i=0, n=message.length; i<n; i++) {
             message[i].setFlag(Flags.Flag.DELETED, true);
            System.out.println("hello world");
    
        }
             folder.close(true);
            store.close();
       }
         catch (Exception e) {
    
          e.printStackTrace();
    
        }
     finally {
          try {
            if (folder != null) {
              folder.close(true);
            }
            if (store != null) {
              store.close();
            }
          } catch (Exception e) { }
    
      }
        }
    }