繁体   English   中英

Gmail API:邮件摘要可忽略正文的回复部分

[英]Gmail API: message snippet to ignore reply parts of the body

def GetMessage(service, user_id, msg_id):
  """Get a Message with given ID.
  Args:
    service: Authorized Gmail API service instance.
    user_id: User's email address. The special value "me"
    can be used to indicate the authenticated user.
    msg_id: The ID of the Message required.
  Returns:
    A Message.
  """
  try:
    message = service.users().messages().get(userId=user_id, id=msg_id).execute()
    return message
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)

results = service.users().messages().list(userId='me', labelIds='UNREAD').execute()
messages = results.get('messages', [])

for msg in messages:
    id = msg['id']
    msgobj = GetMessage(service, 'me', id)

    print msgobj['snippet']

当您通过gmail回复时,您将收到消息,然后收到来自先前回复的消息。 邮件的“摘要”部分也可以接收回复。 我只想获取电子邮件中的最新文本(而不是回复部分)

yeah that sounds good

On Sun, Feb 21, 2016 at 7:36 PM, <apple@gmail.com> wrote:
you want to play ball? ________________________________________ From:         banana@gmail.com

除了摘要之外,还有其他获取最新电子邮件文本的内容吗?

不幸的是,它无能为力。 snippet是消息的一小部分,(基于API Explorer的观察结果)通常约为100个字符。 如果消息太短,它将获得前一条消息的回复部分。

不过,我观察到的是,该片段的消息部分通常具有On [date]语句。 我认为一种方法是,如果创建了这样的短语,则您可以检查并拆分消息(但是,由于该短语本身也可以是局部的,因此这将有些棘手)。

def GetMimeMessage(service, user_id, msg_id):
  """Get a Message and use it to create a MIME Message.
  Args:
    service: Authorized Gmail API service instance.
    user_id: User's email address. The special value "me"
    can be used to indicate the authenticated user.
    msg_id: The ID of the Message required.
  Returns:
    A MIME Message, consisting of data from Message.
  """
  try:
    message = service.users().messages().get(userId=user_id, id=msg_id,
                                             format='raw').execute()
    #print 'Message snippet: %s' % message['snippet']
    msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
    mime_msg = email.message_from_string(msg_str)
    for part in mime_msg.walk():
        if part.get_content_type() == 'text/plain':
            print part.get_payload()
    return mime_msg
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

我决定改用Mimemessage。 如果有的话,这似乎总是包含答复部分。 这样可以更轻松地查找并解析它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM