Gmail API-如何从电子邮件有效负载头中仅请求一个名称/值对?

Gmail API-如何从电子邮件有效负载头中仅请求一个名称/值对?,gmail,gmail-api,Gmail,Gmail Api,我们如何在gmail api的api响应中仅捕获电子邮件地址。这个 字段参数设置为有效负载/头,它返回的数据远远超过我们在响应中需要的数据。 我们只需要JSON响应中的一对名称/值中的值;比如说 我们现在得到的完整响应是这样的 { "payload": { "headers": [ { "name": "Delivered-To", "value": "xxxxx

我们如何在gmail api的api响应中仅捕获电子邮件地址。这个
字段
参数设置为
有效负载/头
,它返回的数据远远超过我们在响应中需要的数据。 我们只需要JSON响应中的一对
名称/值
中的
;比如说

我们现在得到的完整响应是这样的

    {
     "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捕获被退回/退回邮件更好的方法

此外,是否可以请求XML响应而不是JSON。gmail API如何做到这一点


谢谢

首先您需要获取您的,然后您希望使用
getall
方法返回标题列表,然后您可以使用
getitem
从该列表中提取您想要的任何特定标题。

您可以执行消息。例如,get(format=METADATA,metadataIncludeHeaders=[“to”,“from”,“Subject”]),现在只需请求您关心的特定头。注意,这只适用于元数据格式(如果您希望获得完整电子邮件的所有正文,它也不包括正文。根据标题列表,将其转换为键=>[list,of,values]的映射/dict应该不会太难


至于你的第二个问题,是的,你可以用任何你想要的格式请求响应。这是一个标准的谷歌API问题。我找不到一个好的参考(当然有些搜索会),但通常你可以设置“alt=xml”或“alt=”查询参数以获取该格式的响应。不确定这在任何特定的客户端库中是如何公开的。

我将该字符串转换为字符串,并将其作为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;
    }
我不知道这是否是解决这个问题的最佳方法,但这是有效的,并提供了我所需要的数据

// 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";