当前位置: 首页 > 知识库问答 >
问题:

在Python中使用googleapiclient解析电子邮件并发送回复

刁钧
2023-03-14

我目前正在做一个项目,我已经选择使用Gmail发送和接收电子邮件。我希望能够发送电子邮件,有一个用户回复它,并解析他们的响应。响应可以是任意行数(因此类似response.split('\n')[0]的内容将不起作用)。然后它应该能够直接回复该电子邮件线程。

service.users.threads().get(userId='me', id=thread_id).execute()
b'This is my response from my phone\r\n\r\nOn Sat, 28 Nov 2020, 8:40 PM , <myemail@gmail.com>\r\nwrote:\r\n\r\n> This is sent from the python script\r\n>\r\n'

一旦我得到响应,我想要解析它,并根据消息的内容用一个适当的响应来回复。我更愿意直接回复线程,而不是启动一个新的线程。不幸的是,谷歌文档中的所有内容都是:

如果您试图发送回复并希望将电子邮件发送到线程,请确保:

  1. 主题标题匹配
  2. 引用和回复报头遵循RFC 2822标准。
def create_message(sender, to, subject, message_text):
  message = MIMEText(message_text)
  message['to'] = to
  message['from'] = sender
  message['subject'] = subject
  return {'raw': base64.urlsafe_b64encode(message.as_bytes()).decode()}

共有1个答案

姜德容
2023-03-14

你试图用电子邮件来做一些本来不是用来做的事情。我的印象是,您希望电子邮件响应包含结构化数据,但电子邮件文本缺少任何定义良好的结构。它还取决于其他用户拥有哪个电子邮件客户端,以及他们是否发送HTML电子邮件。

这对人类来说通常很容易看到,但对计算机来说却很难看到。这表明,如果你想要更高的可靠性,机器学习可能是最好的策略。无论你选择什么解决方案,它都不是100%可靠的。

  • 电子邮件可以是纯文本或HTML,也可以是两者。
  • 没有明确定义的结构将答复与原文分开。维基百科列出了几种不同的“发帖风格”。
    • 在“网络礼节”还很酷的旧时代,把你的回复放在最上面(“top-posting”)被认为是很糟糕的做法,新的网民被老人家告知要避免在最上面发帖。一些用户仍在下面回复或与原文交织。

    ##-请在这行上方键入您的答复-##

    这有两个目的;它告诉用户top-post,并且它提供了一个分隔符来剪切掉大部分不相关的文本。

    如果您首先处理任何HTML编码,您应该能够通过这样的文本分隔符拆分消息。它并不完美,但通常都能奏效。

      null
    • https://sigparser.com/developers/extract-reply-chains-from-emails/

    它们还解释了将电子邮件文本解析为结构化数据的一些挑战。

 类似资料:
  • 问题内容: 我正在编写一个Python脚本来处理Procmail返回的电子邮件。如该问题中所建议,我正在使用以下Procmail配置: 我的process_mail.py脚本正在通过stdin接收电子邮件,如下所示: 我正在尝试以这种方式解析消息: 我想获取诸如“发件人”,“收件人”和“主题”之类的消息字段。但是,消息对象不包含任何这些字段。 我究竟做错了什么? 问题答案: 您必须确保这些行不会意

  • 问题内容: 如何使用Python在电子邮件中发送HTML内容?我可以发送简单的文字。 问题答案: 这是一个如何使用替代纯文本版本创建HTML消息的示例:

  • 我在我的网站上创建了一个联系表单,并且,为了向网站帐户发送电子邮件(contact@mywebsite.com),我正在使用gmail smtp,使用与接收邮件相同的电子邮件。 所以,用户进入我的网站,点击联系页面,填写表格:姓名,电子邮件,信息。 比我发送以下代码的电子邮件: 电子邮件将进入“我的收件箱”contact@mywwebsite.com“,我可以正常阅读邮件,但是。。。当我点击“回复

  • 我已经看到了一些关于堆栈溢出的类似问题,但我找不到解决这些问题的方法。 我正在尝试使用Python发送一封带有。pdf附件。当我在gmail上查看邮件时,它似乎工作正常。但是当我通过苹果的邮件程序查看邮件时,我没有看到附件。知道是什么原因吗? 我的代码如下。很多都是从stack overflow上的不同位置复制的,所以我不完全理解每个部分在做什么,但它似乎(大部分)起作用: 我不确定它是否相关,但

  • 问题内容: 我试图直接在单击按钮时打开Gmail的电子邮件发送表单,但这总是显示用于发送电子邮件的选项列表。 我这样做是为了打开GMail表单: 但这不是打开GMail表单。我应该怎么做才能打开GMail表单,请帮忙。 有什么办法吗? 问题答案: 在线路上使用一些东西

  • 问题内容: 如何使用curl命令行程序从gmail帐户发送电子邮件? 我尝试了以下方法: 使用file.txt作为电子邮件的内容,但是,当我运行此命令时,出现以下错误: 是否可以从仍由curl托管的个人服务器托管帐户发送电子邮件?这样会使身份验证过程更容易吗? 问题答案: curl –url 'smtps://smtp.gmail.com:465’ –ssl-reqd \ –mail-from '