0

我做了一个android应用程序,现在,这个应用程序需要阅读电子邮件。我找到了这段代码:

      protected ArrayList<Mail> doInBackground(Void... params) {
    ArrayList<Mail> mails = new ArrayList<Mail>(32);
        boolean finish = false;

        try {
            String direcCompleta = URI_PREFIX + email;
            Uri a = Uri.parse(direcCompleta);
            Cursor  cCursor = resolver.query(a, null, null , null, null);

            while (cCursor.moveToNext() && (! finish)) {
                finish = fromTime.before(new Date(cCursor.getLong(1)));

                if (! finish){
                    String conv_id  = cCursor.getString(cCursor.getColumnIndex("_id"));
                    Uri    uri      = Uri.parse(URI_PREFIX + email + "/" + conv_id + "/messages");
                    Cursor mCursor  = resolver.query(uri, MESSAGE_PROJECTION, null, null, null);                    

                    while (mCursor.moveToNext() &&  (! finish)){
                        long mtime = mCursor.getLong(4);
                        finish = fromTime.before(new Date(mtime));
                        if (! finish){
                            mails.add(new Mail(mCursor.getString(0), mCursor.getString(2), mCursor.getString(1), mCursor.getString(4), mtime));                             
                        }
                    }                       
                }               
            }
        } catch (Exception ex){  
            Log.e("GmailReadApp", ex.toString());
            mails.add(new Mail(null, null, ex.toString(), ex.toString(), 0));
        }

        return mails;
    }

但 cCursor 为空。我在应用程序中有我的邮件帐户:“电子邮件”,因为我使用 android sdk,它没有应用程序:“GMAIL”。而且android sdk没有市场。

有人可以帮助我吗?谢谢。(无论是用于 gmail、yahoo、hotmail ......)

4

2 回答 2

0

我做了一个android应用程序,现在,这个应用程序需要阅读电子邮件

然后从头开始编写您自己的电子邮件客户端。有一个 JavaMail 的 Android 端口漂浮在某处。或者,获取现有的开源电子邮件客户端(例如,K9)并对其进行修改以适合。

我找到了这段代码

没有任何可能的价值URI_PREFIX被记录并支持在 Android 上使用。即使对于未记录和不受支持的值,您也无法拥有读取这些消息所需的权限。

于 2012-06-26T22:55:51.667 回答
0

你可以用 Kotlin 做到这一点。

  1. 下载jar文件:addinal.jarmail.jaractivation.jar
  2. 在 android studio 的外部库中添加这些 jar
  3. 在清单文件中添加互联网权限: <uses-permission android:name="android.permission.INTERNET" />
  4. 允许安全性较低的应用访问您的 Gmail

将此代码添加到您的应用程序:

GlobalScope.launch {
            val props = Properties()
            props.setProperty("mail.store.protocol", "imaps")
            try{
                val session = Session.getInstance(props, null)
                val store = session.store
                store.connect("imap.gmail.com", "youremail@gmail.com", "password")
                val inbox = store.getFolder("INBOX")
                inbox.open(Folder.READ_ONLY)
                Log.d("MyLog", inbox.messageCount.toString())
                val msg = inbox.getMessage(inbox.messageCount)
                val address = msg.from
                for (adr in address) {
                    Log.d("MyLog", adr.toString())
                }
                val mp = msg.content as Multipart
                val bp = mp.getBodyPart(0)
                Log.d("MyLog", bp.content.toString())
            }catch (e: Exception){
                Log.d("MyLog", "Error $e")
            }
        }
于 2021-03-10T13:15:21.077 回答