使用GAE python接收邮件,但是邮件正文中包含意外信息

Posted

技术标签:

【中文标题】使用GAE python接收邮件,但是邮件正文中包含意外信息【英文标题】:Using GAE python to receive email, but the Body of the message contains unexpected information 【发布时间】:2015-02-10 02:23:29 【问题描述】:

我正在接收到 GAE python 应用程序的电子邮件。 'to' 和 'sender' 字段内容符合预期,但正文包含实际消息正文之前的附加信息。如何在不添加消息信息的情况下仅获取实际消息?

添加的信息如下;

来自没人 2014 年 12 月 11 日星期四 13:48:29 内容传输编码:7bit MIME 版本:1.0 内容类型:文本/纯文本; charset="utf-8"

我的代码如下;

    message = mail.InboundEmailMessage(self.request.body)
    a, b = message.to.split('<',1)
    recip, c = b.split('@', 1)
    logging.debug("The email was to: %s" % recip.upper())
    if recip.upper() == "MESSENGER":
        self.process_Messenger(message)
    if recip.upper() == "SUPPORT":
        #Will add code to forward the email to actual support message box and send a reply.
        logging.debug("We received an email for SUPPORT")
    return

def process_Messenger(self, message):
    logging.debug("In process_Messenger code")
    # Email subjects to Messenger should start with 'Re: ' plus the assemblyid 
    .
    .
    # Construct the message
    messageid = LHMessage.construct_message(my_lhmessage, "assemblyid", message.body, "threadid", "sender")
    .
    .

construct_message 的代码是;

    def construct_message(self, assemblyid, pmessage, threadid, sender):
            logging.debug("In construct_message code")
            message = str(pmessage)
            logging.debug("Processing message: %s" % message)

调试信息是;

处理消息:来自 nobody Thu Dec 11 13:48:29 2014 content-transfer-encoding: 7bit MIME-Version: 1.0 Content-Type: text/plain; charset="....

【问题讨论】:

【参考方案1】:

GAE 文档here 在处理 InboundEmailMessage 时有些误导,它继承自 EmailMessage,但不包含预期的漂亮文本正文:(来自链接:正文:“消息。”)

您可以改用“正文”属性,它将消息拆分为文本和 html 正文。

我是这样使用的:

text_bodies = message.bodies('text/plain')
for content_type, body in text_bodies:
  text = body.decode()

更多信息请参见this link。

【讨论】:

以上是关于使用GAE python接收邮件,但是邮件正文中包含意外信息的主要内容,如果未能解决你的问题,请参考以下文章

Mailkit - 接收从苹果邮件发送的消息时没有附件或 html 正文

通过Python中的smtp.gmail.com在GAE上发送电子邮件

如何在 python 2 中向多部分电子邮件添加正文?

python发送邮件

使用 mailkit 发送的多部分电子邮件的文本/纯文本版本未正确接收

使用python提取电子邮件正文的第一行