如何在android中使用JavaMail API获取gmail线程ID?

问题描述

根据 gimap 文档 javamail new gimap doc,ImapMessage 不会转换为 GmailMessage。

文档代码为:

GmailMessage gmsg = (GmailMessage)msg; System.out.println("Gmail message ID is " + gmsg.getMsgId()); String[] labels = gmsg.getLabels(); for (String s : labels) System.out.println("Gmail message label: " + s);

这里的 msg 是 ImapMessage 的一个对象。

错误是: java.lang.ClassCastException:com.sun.mail.imap.IMAPMessage 无法转换为 com.sun.mail.gimap.mailMessage>

如何解决?

我的 Imap 连接代码是:

import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Folder;

String IMAP_PROTOCOL = "imap";
String IMAP_HOST = "imap.gmail.com";
String IMAP_PORT = "993";

private Store store;
private Folder folderInbox;
private Session session;


  private Properties getServerProperties(String protocol,String host,String port) {
    Properties properties = new Properties();

    // server setting
    properties.put(String.format("mail.%s.host",protocol),host);
    properties.put(String.format("mail.%s.port",port);

    // SSL setting
    properties.setProperty(
            String.format("mail.%s.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    properties.setProperty(
            String.format("mail.%s.socketFactory.fallback","false");
    properties.setProperty(
            String.format("mail.%s.socketFactory.port",String.valueOf(port));

    return properties;
  }


//Now connect gmail with imap
Properties properties = getServerProperties(protocol,host,port);

session = Session.getDefaultInstance(properties);

store = session.getStore(protocol);
store.connect(userName,password);

// opens the inbox folder
folderInbox = store.getFolder(folderName);
folderInbox.open(Folder.READ_ONLY);

// fetches new messages from server
Message[] messages = folderInbox.getMessages();

     for (Message msg: messages
             ) {

      GmailMessage gmsg = (GmailMessage)msg;
      System.out.println("Gmail message ID is " + gmsg.getMsgId());
      String[] labels = gmsg.getLabels();
      for (String s : labels)
            System.out.println("Gmail message label: " + s);
            
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)