Ballerina GmailConnector[1] 的 readMessage() 函数接受 4 个参数,其中 2 个是可选的。format和metadataHeaders参数是可选的。您也可以参考 Gmail API 文档 [2]。
在您的情况下,由于您没有为format传递任何值,因此您的 readMessage 请求将具有默认格式,即“FORMAT_FULL” [3]。API 文档[1] 中也对此进行了说明。因此,您从 Gmail API 获得的响应将没有“原始”字段,并且连接器的消息资源的“原始”字符串字段将为空 [4]。因此,当您尝试将其作为msg["raw"]访问时,您会得到一个空字符串。
您得到的是空字符串还是空值?因为理想情况下它应该为您的代码返回一个空字符串,并且当我尝试相同的代码时,我得到了一个空字符串作为“原始”字段的预期。
如果您想使用“raw”字段以 RFC 2822 格式和 base64url 编码的字符串获取整个电子邮件,请通过提供格式为FORMAT_RAW来调用 readMessage 函数,如下所示,
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