7

gmail API の API 応答で電子メール アドレスのみをキャプチャするにはどうすればよいですか。fieldsパラメータは に設定されてpayload/headersおり、応答で必要以上のデータが返されます。 必要なのは、JSON 応答のvalue1 つのname/valueペアからです。例えば

現在の完全な応答は次のようになります

    {
     "payload": {
     "headers": [
                 {
                  "name": "Delivered-To",
                  "value": "xxxxxxx"
                {
                 "name": "Received",
                 "value": "xxxxxxxx"
                },
                {
                "name": "Received-SPF",
                "value": "----"
                 },......
                 {
                  "name": "To",
                  "value": "xxxxxxx" 
                 }, ...... E.T.C........E.T.C ......

  /*All we want is one name/value pair to be returned e.g. */
      {
        "payload": {
                 "headers": [
                   {
               "name": "X-Failed-Recipients",
               "value": "............."
               }
             ]
      }

より良い質問は、gmail API を介してこれよりもバウンス/返信されたメールをキャプチャするより良い方法があるでしょうか?

また、JSON の代わりに XML 応答を要求することは可能ですか。gmail API でそれを行うにはどうすればよいですか?

ありがとう !!

4

3 に答える 3

0

文字列を文字列に変換し、それを JSON 配列として取得し、それを繰り返し処理して、必要な JSON オブジェクトを取得しました。

private static DirtyMail getHeaderParts(DirtyMail mail, List<MessagePartHeader> headers)
             {
                 try {
                     //Convert the header into JSON Array for easy processing of data.
                     JSONArray headerArray = new JSONArray(headers.toString());
                     for(int n = 0; n < headerArray.length() ; n++) {
                         JSONObject jsonObject = headerArray.getJSONObject(n);

                         //Pull date
                         if(jsonObject.get(Constants.DATE)!=null) {
                            mail.setDate(jsonObject.getString(Constants.DATE));
                         }

                         //Pull Subject

                         //Pull reply-to address

                         //Pull delivered-from address

                         //Pull delivered-to address

                         Log.d(TAG, "JSON Object : "+ jsonObject);
                     }
                     //Log.d(TAG,"header String: "+headers.toString());
                 } catch (Exception e) {
                     e.printStackTrace();
                 }

        return mail;
    }

これらの値を Constant クラスに保持しました。

// Data pulled from inside the header
    public static final String DATE = "Date";
    public static final String SUBJECT = "Subject";
    public static final String REPLY_TO = "Reply-To";
    public static final String DELIVERED_TO = "Delivered-To";
    public static final String FROM = "From";

これがこれに対する最善の修正であるかどうかはわかりませんが、これは機能し、必要なデータを提供します。

于 2016-10-23T14:34:44.050 に答える
0

最初にメッセージ ペイロードを取得する必要があります。次に、getallメソッドを使用してヘッダーのリストを返します。次に、 を使用してgetitem、そのリストから必要な特定のヘッダーを取得できます。

于 2014-08-07T16:32:30.427 に答える