Ballerina / gmail包中“消息资源”中的raw属性

时间:2018-07-06 18:18:28

标签: ballerina

var response = gmailClient->readMessage(userId,msg_id);
gmail:Message msg;
match response {
    gmail:Message m => msg = m;
    gmail:GmailError err=> io:println(err);
}
gmail:MessageBodyPart msg_body = msg["plainTextBodyPart"];
string msg_content = msg["raw"];

当我在ballerina / Gmail包的消息资源中使用'plainTextBodyPart'属性时,它会正确返回消息正文。但是,如果我使用与上述相同资源的'raw'属性,它将返回一个空值。我的代码中的错误?

1 个答案:

答案 0 :(得分:3)

芭蕾舞女演员GmailConnector [1]的readMessage()函数接受4个参数,其中2个为可选参数。 format metadataHeaders 参数是可选的。您也可以参考Gmail API文档[2]。

在您的情况下,由于您没有传递 format 的任何值,因此readMessage请求将具有默认格式,即“ FORMAT_FULL” [3]。 API文档中也有说明[1]。因此,您从Gmail API获得的响应将不会包含 Message 资源的“原始” 字段和“原始” 字符串字段。连接器将为空[4]。因此,当您尝试以 msg [“ raw”] 的方式访问它时,将会得到一个空字符串。

您得到的是空字符串还是空值?因为理想情况下,它应该为您的代码返回一个空字符串,并且当我尝试相同的代码时,我按预期为“ raw” 字段获得了一个空字符串。

如果要使用“ raw” 字段以RFC 2822格式和base64url编码的字符串的形式获取整个电子邮件,请通过提供 FORMAT_RAW < / strong>,

var response = gmailEP->readMessage(userId, messageId, format = gmail:FORMAT_RAW);

让我知道这是否对您有帮助。

[1] https://central.ballerina.io/wso2/gmail

[2] https://developers.google.com/gmail/api/v1/reference/users/messages/get

[3] https://github.com/wso2-ballerina/package-gmail/blob/master/gmail/gmail_connector.bal#L75

[4] https://github.com/wso2-ballerina/package-gmail/blob/master/gmail/gmail_data_mappings.bal#L40