【发布时间】:2018-07-05 19:06:05
【问题描述】:
我想使用 Ballerina Gmail 包读取电子邮件的内容。是否有任何内置机制可以仅读取电子邮件的实际正文内容,不包括发件人的签名。
【问题讨论】:
标签: ballerina
我想使用 Ballerina Gmail 包读取电子邮件的内容。是否有任何内置机制可以仅读取电子邮件的实际正文内容,不包括发件人的签名。
【问题讨论】:
标签: ballerina
是的。您可以使用我相信您已经开始使用的连接器的 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/任何。
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,然后点击您要阅读的邮件右上角的 :(更多)按钮,然后点击显示原件. 您可以将整个邮件视为包含所有标题和 MIME 邮件部分的 MIME 邮件。
此外,您还可以使用 inlineImgParts 和 msgAttachments 获取电子邮件的任何附件和内嵌图像。
如果您还有任何疑虑,请告诉我。
【讨论】: