我想使用 Ballerina Gmail 包读取电子邮件的内容。是否有任何内置机制可以仅读取电子邮件的实际正文内容,不包括发件人的签名。
1 回答
是的。您可以使用我相信您已经开始使用的连接器的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 消息部分。
此外,您可以使用inlineImgParts和msgAttachments 获取电子邮件的任何附件和内联图像。
如果您有任何进一步的疑虑,请告诉我。