如何使用java访问gmail中的标签文件夹?
我们可以从gmail收件箱中阅读邮件,但我们可以从标签上阅读吗? 如果我从下面的例子中如何使用java访问gmail中的标签文件夹?,java,Java,我们可以从gmail收件箱中阅读邮件,但我们可以从标签上阅读吗? 如果我从下面的例子中 import java.util.Properties; 导入javax.mail.Folder; 导入javax.mail.Message; 导入javax.mail.MessaginException; 导入javax.mail.NoSuchProviderException; 导入javax.mail.Session; 导入javax.mail.Store; 公共类收件箱阅读器{ 公共静态void ma
import java.util.Properties;
导入javax.mail.Folder;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.NoSuchProviderException;
导入javax.mail.Session;
导入javax.mail.Store;
公共类收件箱阅读器{
公共静态void main(字符串参数[]){
Properties props=System.getProperties();
props.setProperty(“mail.store.protocol”、“imaps”);
试一试{
Session Session=Session.getDefaultInstance(props,null);
Store Store=session.getStore(“imaps”);
store.connect(“imap.gmail.com”、“密码”);
系统输出打印项次(存储);
文件夹收件箱=store.getFolder(“收件箱”);
收件箱。打开(文件夹。只读);
messages[]=inbox.getMessages();
用于(消息:消息){
System.out.println(消息);
}
}捕获(无此提供异常e){
e、 printStackTrace();
系统出口(1);
}捕获(消息异常e){
e、 printStackTrace();
系统出口(2);
}
}
}
如果我用标签名称更改“收件箱”,它会抛出一个错误:找不到收件箱。
有什么帮助吗?请尝试以下对我有用的代码:
store.getFolder("FolderNameGoesHere");
private static Store getConnection() throws MessagingException {
Properties properties;
Session session;
Store store;
properties = new Properties();
properties.setProperty("mail.host", "imap.gmail.com");
properties.setProperty("mail.port", "995");
properties.setProperty("mail.transport.protocol", "imaps");
session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("dummy@gmail.com",
"dummy");
}
});
store = session.getStore("imaps");
store.connect();
return store;
}
public static boolean isMailReceivedBySubject(String subject,String folder) throws MessagingException {
Store store = null;
boolean emailReceived = false;
try {
store = getConnection();
Folder mailFolder = store.getFolder(folder);
mailFolder.open(Folder.READ_WRITE);
SearchTerm st = new AndTerm(new SubjectTerm(subject), new BodyTerm(subject));
Message[] messages = mailFolder.search(st);
for (Message message : messages) {
System.out.println("message : " + message.getSubject());
if (message.getSubject().contains(subject)) {
System.out.println("Found the email subject : " + subject);
emailReceived = true;
break;
}
}
return emailReceived;
}finally {
if (store != null) {
store.close();
}
}
}
所以在这行:
folderinbox=store.getFolder(“inbox”)
你能试试这样的方法吗:文件夹收件箱=store.getFolder(“foldernamegoesher”)代码>收件箱=store.getFolder(“folderA”);结果是内容:javax.mail.internet。MimeMultipart@183967b,内容不是字符串。我的问题通过msg.writeTo(System.out)解决;msg.setFlag(Flags.Flag.DELETED,true);
store.getFolder("FolderNameGoesHere");
private static Store getConnection() throws MessagingException {
Properties properties;
Session session;
Store store;
properties = new Properties();
properties.setProperty("mail.host", "imap.gmail.com");
properties.setProperty("mail.port", "995");
properties.setProperty("mail.transport.protocol", "imaps");
session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("dummy@gmail.com",
"dummy");
}
});
store = session.getStore("imaps");
store.connect();
return store;
}
public static boolean isMailReceivedBySubject(String subject,String folder) throws MessagingException {
Store store = null;
boolean emailReceived = false;
try {
store = getConnection();
Folder mailFolder = store.getFolder(folder);
mailFolder.open(Folder.READ_WRITE);
SearchTerm st = new AndTerm(new SubjectTerm(subject), new BodyTerm(subject));
Message[] messages = mailFolder.search(st);
for (Message message : messages) {
System.out.println("message : " + message.getSubject());
if (message.getSubject().contains(subject)) {
System.out.println("Found the email subject : " + subject);
emailReceived = true;
break;
}
}
return emailReceived;
}finally {
if (store != null) {
store.close();
}
}
}