gpt4 book ai didi

python - imaplib 错误地将 `=` 和 `3D` 字符添加到电子邮件中的 URL 文本中

转载 作者:行者123 更新时间:2023-11-30 22:24:35 25 4
gpt4 key购买 nike

在这里,我使用 imapblibemail 根据特定条件(即发件人和主题)检索特定电子邮件。

import imaplib
import email

FROM_EMAIL = "##########@gmail.com"
FROM_PWD = "##########"
SMTP_SERVER = "imap.gmail.com"

mail = imaplib.IMAP4_SSL(SMTP_SERVER)
mail.login(FROM_EMAIL,FROM_PWD)
mail.select("INBOX")
result, data2 = mail.search(None,'(FROM "####" SUBJECT "####")')
ids = data2[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, email_data = mail.fetch(latest_email_id, "(RFC822)")

raw_email = email_data[0][1]
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string)

在电子邮件中,在我的桌面上使用 gmail,有一个如下所示的链接(请注意,# 字符代表敏感信息):

# This is how the link is supposed to appear
https://inreach.garmin.com/textmessage/txtmsg?extId=e3e7d4c2-fab4-43ad-93de-f9dedca8280#####=##########%40gmail.com

当打印 python 检索到的电子邮件文本时,我得到了这个错误的链接:

email_text = list(email_message.walk())[1].get_payload()
print(email_text) # Note(I am not printing the whole email for privacy reasons)

# The link as python has retrieved it appears like this:

https://inreach.garmin.com/textmessage/txtmsg?extId=3De3e7d4c2-fab4-43ad-93=de-f9dedca8280#####=3D##########%40gmail.com

Python 以某种方式在 93de 之间添加一个 = 字符,并且还添加了几个 3D 字符.

Python 在做什么?关于如何解决这个问题的想法?

最佳答案

您看到的是quoted-printable encoding 。这是一种将任意字节编码为 ASCII 文本以便通过例如 ASCII 文本传输的方法。电子邮件。这种编码的后果如下:

  • 消息中的每个 '=' 字符都会编码为 '=3D'(因为 0x3d 是 '=' 的字符代码)。
  • 通过插入序列 '=\n'(基本上是解码器将删除的转义换行符),行将换行为 76 个字符。我敢打赌这些换行符之一已插入到您的链接中间。

您可以使用quopri module将编码文本转换回原始字节。来自标准库。 Python 的某些部分 email handling library也可以为您执行此操作。

关于python - imaplib 错误地将 `=` 和 `3D` 字符添加到电子邮件中的 URL 文本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com