python - 如何在 Python 3 中阅读电子邮件内容

标签 python python-3.x email base64 imaplib

我已经尝试了很多代码来访问和阅读电子邮件内容,例如,关于 Gmail,我只能进行身份验证,而在 Outlook 中,我有可以读取电子邮件的代码,但它是加密的……但现在它只能访问电子邮件,而不能' 输出加密信息。所以我需要帮助来解决这个问题。谢谢

代码如下:

import imaplib
import base64 

email_user = input('Email: ')
email_pass = input('Password: ')

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993)
M.login(email_user, email_pass)
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    num1 = base64.b64decode(num1)
    data1 = base64.b64decode(data)
    print('Message %s\n%s\n' % (num, data[0][1]))
M.close()
M.logout()

最佳答案

无论如何,我已经检查了您的代码,并且有一些评论。第一个是当您在此处粘贴代码时,逗号似乎已被删除。我已尝试将它们放回去,因此请检查我的代码是否与您的相符。请记住,如果无法访问 Outlook,我无法测试我的建议。

import imaplib
import base64
email_user = input('Email: ')
email_pass = input('Password: ')

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993)
M.login(email_user, email_pass)
M.select()

typ, data = M.search(None, 'ALL')

for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')   # data is being redefined here, that's probably not right
    num1 = base64.b64decode(num1)          # should this be (num) rather than (num1) ?
    data1 = base64.b64decode(data)
    print('Message %s\n%s\n' % (num, data[0][1]))  # don't you want to print num1 and data1 here?

M.close()
M.logout()

假设已正确重构,您在第 10 行调用消息列表数据,然后在第 13 行将调用 fetch() 的结果重新分配给数据。

在第 14 行,您对尚未定义的 num1 进行解码。我不确定这些数字是否需要解码,这似乎有点奇怪。

在第 16 行,您打印的是编码值,而不是解码后的值。我想你可能想要类似的东西

import imaplib
import base64
email_user = input('Email: ')
email_pass = input('Password: ')

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993)
M.login(email_user, email_pass)
M.select()

typ, message_numbers = M.search(None, 'ALL')  # change variable name, and use new name in for loop

for num in message_numbers[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    # num1 = base64.b64decode(num)          # unnecessary, I think
    print(data)   # check what you've actually got. That will help with the next line
    data1 = base64.b64decode(data[0][1])
    print('Message %s\n%s\n' % (num, data1))

M.close()
M.logout()

希望对您有所帮助。

关于python - 如何在 Python 3 中阅读电子邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45433995/

相关文章:

python - 当一列满足基于另一列的特定条件时,有没有办法迭代地查找数据帧的索引?

python - 在 Python 中为线性拟合(具有两个参数)生成置信区间等高线图

python - matplotlib:使用 matplotlib 或 seaborn 显示每个日期的所有产品价格的折线图

python - 从 Pygame 中的组中获取特定 Sprite

python - 如何将数字替换为空间参数

php - 如何在邮件主题中设置变音符 ü

c# - 在 FluentEmail 中的后续电子邮件中不断添加收件人

python - 从不在 python 列表中的对象中删除键?

python - 在 Mac OS 上将 iPython 更新到 2.0 版

android - 如何通过设备上的默认邮件应用程序直接发送电子邮件