android - 新电子邮件到达时未通知实现 MessageCountListener 的服务

标签 android jakarta-mail

我已经实现了一项服务,该服务检索收件箱并实现 MessageCountListener 接口(interface)以收听新电子邮件到达。但是在新电子邮件到达时,它不会收到通知!可能是什么原因,还有什么可以做的? 这是代码:

public class EmailRetreiverService extends Service implements MessageCountListener{

public static final Vector v=new Vector();
public static final Vector nwmsg=new Vector();
Message[] m=null;
@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
@Override
public void onCreate(){
    Log.d("EmailRetreiverStarted"," ");

    ConvertToSmtp cts=new ConvertToSmtp("myemail@gmail.com","mypassword"," "," "," ", " ");
    Folder folder=cts.retreiveInbox();
    try {
        m=folder.getMessages();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    for(int i=0;i<m.length;i++){
        v.add(m[i]);

    }
    Log.d("EmailRetreiverMessageCount",new Integer(m.length).toString());
    Collections.reverse(v);
    /*folder.addMessageCountListener(new MessageCountAdapter(){  

        public void messagesAdded(MessageCountEvent ev) {  
            Log.d("MessageListener","message listner invoked.");  
            Message[] msgs = ev.getMessages(); 
            TTSservice.say("Attention! "+msgs.length+" new messages have arrived now.Kindly retreive inbox again!");
            Collections.reverse(v);
            for (int i = 0; i < msgs.length; i++) {

                v.add(msgs[i]);

            //System.out.println("Got " + msgs.length + " new messages");  
            }  
            Collections.reverse(v);
            // Just dump out the new messages  

        }

    });*/
    folder.addMessageCountListener(this);
}
@Override
public void onDestroy(){
    v.removeAllElements();
}
@Override
public void messagesAdded(MessageCountEvent arg0) {
    // TODO Auto-generated method stub
    Log.d("EmailService","MessageArrived!");
}
@Override
public void messagesRemoved(MessageCountEvent arg0) {
    // TODO Auto-generated method stub
    Log.d("EmailService","MessageRemoved!");
}

} 必须注意的是,该服务正在成功检索收件箱。但只是没有收到通知。

最佳答案

您需要做一些事情来使 JavaMail 接收来自服务器的新消息通知。一种简单的方法是定期调用 getMessageCount() 方法。另一种方法是使用特定于 IMAP 的 idle() 方法,这需要专用于调用该方法的线程。

关于android - 新电子邮件到达时未通知实现 MessageCountListener 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495073/

相关文章:

Android:自定义菜单创建

java - 如何防止用户读取 Java 中的变量?

java - 错误 - trustAnchors 参数必须非空

java.lang.NoClassDefFoundError : com/sun/mail/util/LineInputStream for send mail through Java 错误

Java (Android) - 未找到类异常

android - 方法 View.getForeground() 需要 api 23

android - WebDriver 使用 Appium : Starting new remote server every time for Android?

android - cocos2d-x纯虚方法只在eclipse中报错

java - 使用java获取邮件正文内容中的问号符号

jakarta-mail - IMAPMessage.getUID() 和 Message-ID header 有什么区别?