如何阅读Python中的电子邮件内容3

如何阅读Python中的电子邮件内容3

问题描述:

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

下面的代码:

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() 
+0

你在做什么?你在期待什么? – Nabin

+0

我只收到电子邮件身份验证,并且期待输出可以显示收件箱中的电子邮件内容 – Ricardo91

我已经通过你的代码进行核对无论如何,有一对夫妇的意见。第一个问题是,当你在这里粘贴代码时,逗号似乎已被删除。我试图让他们回来,所以检查我的代码是否符合你的要求。请记住,如果没有访问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

第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() 

希望有所帮助。