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