Android 检查gmail Inbox邮件

来源:互联网 发布:淘宝淘口令怎么用 编辑:程序博客网 时间:2024/05/21 10:24
最近实现了一个android程序,能从一个gmail帐户中得到收件箱(Inbox)里面邮件信息,如多少未读邮件,邮件总数等。类似的功能,网上有很多例子。

实现原理还是用java提供的一些类,先看一看界面效果:


图一:输入email地址和密码,只能是gmail的,别的邮件目前没做



图二:连接服务器过程中。



图三:结果,我只实现了一些简单的功能,别的没有实现。


下面说一下怎么实现的:

最重要的是需要三个包,也就是.jar,分别是:mail.jar, additional.jar, activation.jar。我当时就想,为什么sun不把这几个包放在它标准的SDK里,像什么xml解析,加密等都放到标准SDK里了,怎么这个不呢?后来我想了一下,可能是因为这个是跟应用密切相关的东西,所以他们认为不适合放到SDK里。也只是我的猜想。

这个三个包可以从sun官网上下载,也可以下到source,开源的。
把三个包下载后,放在android工程目录的lib文件内,如果没有就新建一个,然后加入到工程中。

同时,一定要在AndroidManifest.xml中作如下声明:

    <!-- mail.jar  -->    <uses-library android:name="javax.mail" />    <!-- activation.jar  -->    <uses-library android:name="javax.activation" />    <!-- additional.jar  -->    <uses-library android:name="org.apache.harmony.awt" />

实现代码如下:

JavaMailUtil.java

import java.util.Properties;import javax.mail.Folder;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Store;import com.lee.demo.javamail.model.JavaMailInfo;public class JavaMailUtil{    private static final String FOLDERTYPE_INBOX = "INBOX";       public static boolean getInboxMailsInfo(JavaMailInfo outInfo)    {        boolean retVal = false;        try        {            final String email = outInfo.email;            final String password = outInfo.password;                       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", email, password);                       Folder inbox = store.getFolder(FOLDERTYPE_INBOX);            inbox.open(Folder.READ_ONLY);                       outInfo.allMailsCount = inbox.getMessageCount();            outInfo.unreadMailsCount = inbox.getUnreadMessageCount();            outInfo.newMailsCount = inbox.getNewMessageCount();            outInfo.isSuccessful = true;                       inbox.close(false);            store.close();            retVal = true;        }        catch (NoSuchProviderException e)        {            e.printStackTrace();        }        catch (MessagingException e)        {            e.printStackTrace();        }               return retVal;    }}

JavaMailInfo.java

public class JavaMailInfo{       public int      folderType;    public int      unreadMailsCount;    public int      allMailsCount;    public int      newMailsCount;    public boolean  isSuccessful;    public String   email;    public String   password;}


原创粉丝点击