0

我想使用 Ballerina Gmail 包读取电子邮件的内容。是否有任何内置机制可以仅读取电子邮件的实际正文内容,不包括发件人的签名。

4

1 回答 1

0

是的。您可以使用我相信您已经开始使用的连接器的readMessage功能。成功读取来自 Gmail API 的消息后,它会返回消息类型对象。响应中的 Message 类型有一个plainTextBodyPart、一个htmlBodyPart 、一个inlineImgParts数组和一个msgAttachments数组。请参阅 Gmail 连接器的 API 文档 [1]。

plainTextBodyPart是MessageBodyPart类型,它是电子邮件正文的 MIME 消息部分,其内容类型为text /plain

htmlBodyPart是MessageBodyPart类型,它是电子邮件正文的 MIME 消息部分,其内容类型为text /html

inlineImgParts是MessageBodyPart类型的数组,它是 MIME 消息部分的数组,其中包含您的电子邮件的内联图像,其内容类型为image/any

msgAttachments是MessageBodyPart类型的数组,是由电子邮件附件组成的消息的 MIME 消息部分数组。

因此,如果您只想读取电子邮件的实际正文内容(不包括电子邮件标题),您可以通过上述MessageBodyPart类型直接访问它。

如果您的电子邮件有 HTML 邮件正文,那么您可以按如下方式访问 HTML 邮件正文。

var response = gmailEP->readMessage(userId, messageId);
match response {
    gmail:Message m => {
        gmail:MessageBodyPart htmlMsgBody = m.htmlBodyPart;
        string htmlBody = htmlMsgBody.body;
        io:println(htmlBody); 
        // Your html message body will be a base64 encoded string. 
        // You may need to decode it using an inbuild Ballerina library, for your use.
    }             
    gmail:GmailError e => io:println(e);

}

请注意,一般情况下,您的 Gmail 邮箱中的邮件将同时包含 HTML 和文本邮件正文,除非它是发送给您或由您创建为 text/plain(通过以纯文本模式编写)。因此,当您阅读此类邮件时,它会同时包含 plainTextBodyPart 和 htmlBodyPart。plainTextBodyPart 的正文将只有没有 HTML 标记的文本正文,而 htmlBodyPart 的正文将包含消息的整个 HTML 内容。

您可以通过以原始模式查看电子邮件来验证这一点。(登录并转到您的 Gmail 邮箱的 UI,然后单击您要阅读的邮件右上角的: (more) 按钮,然后单击Show Original。您可以将整个邮件作为 MIME 邮件查看,其中包含所有标头和 MIME 消息部分。

此外,您可以使用inlineImgPartsmsgAttachments 获取电子邮件的任何附件和内联图像。

如果您有任何进一步的疑虑,请告诉我。

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

于 2018-07-07T20:03:33.957 回答