如何摆脱从GMail API中获取的部分消息

时间:2018-04-03 16:01:15

标签: python regex gmail-api

我成功从GMail API获取消息。消息看起来像这样:

"""
Blah blah blah blah

CONFIDENTIALITY NOTICE
This e-mail message and all attached files are intended only for the \n person to whom it is addressed and may contain information protected by \n law, and any confidential information. If this e-mail message was sent to \n the wrong person we warn that any unauthorised use of this e-mail \n message and attached files is strictly prohibited. If you are not the \n intended recipient, please destroy all copies of the original message from your computer.

现在我想要摆脱这个“机密性通知”以及之后的所有内容,只获取消息正文。我该怎么用?常用表达?我的代码的相关部分是:

def getMessageBody(self, msg_id):
        try:
            message = self.service.users().messages().get(userId=self.user_id, id=msg_id, format='raw').execute()
            msg_str = base64.urlsafe_b64decode(message['raw'].encode('utf-8'))
            mime_msg = email.message_from_string(msg_str)
            messageMainType = mime_msg.get_content_maintype()
        if messageMainType == 'multipart':
        for part in mime_msg.get_payload():
            if part.get_content_maintype() == 'text':
                return part.get_payload()
        return ""
    elif messageMainType == 'text':
        return mime_msg.get_payload()
except errors.HttpError, error:
        print("An error occurred: %s" % error)

1 个答案:

答案 0 :(得分:0)

你可以尝试像

这样粗糙的东西
return part.get_payload().split('\nCONFIDENTIALITY NOTICE\n')[0]

截断包含此字符串的每个正文部分(并方便地通过所有其他部分而不进行修改)。

在一般情况下,没有用于识别此类型的部分的惯例 - 它只是正文文本的一部分,没有特定的机器可读标记 - 您无法轻易预测哪些法律或当地习俗形成它的措辞(除非是非常广泛的术语;要求这一点的组织和管辖区是愚蠢的)。只要您处理的是一小组模板,您可以使用其中的代表性样本,理想情况下使用您理解的语言,但这在实践中是可行的。