使用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
这可能解释了发生的情况。问题在于GMail没有遵循IMAP删除电子邮件的惯例 根据法律,你必须:使用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]/Trash
DELETED
设置为trueFolder-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) { }
}
}
}