输出Gmail SubjectFrom列表的程序不工作。

我试图简单地输出收件箱中每封邮件的FROM和SUBJECT字段。我已经花了太多的时间来解决这个问题,所以我把它扔到栅栏上,希望能得到一些帮助。

登录的部分似乎工作得很好,(gmail 2FA)只是处理结果似乎没有工作。什么都没有输出,而应该有。 我相信这和下面这行有关。 if isinstance(response_part, tuple) 为什么它要找一个元组?

我对python太陌生了,不知道可能是什么问题。

谁能告诉我,我的代码可能有什么问题,如何纠正?我从下面这个代码片段中得到的。

这个链接

import imaplib
import base64
import os
import email

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

mail = imaplib.IMAP4_SSL('imap.gmail.com',993)
mail.login(email_user, email_pass)
mail.select('Inbox')

type, data = mail.search(None, 'ALL')
mail_ids = data[0]
id_list = mail_ids.split()

for response_part in data:
        if isinstance(response_part, tuple):
            msg = email.message_from_string(response_part[1].decode('utf-8'))
            email_subject = msg['subject']
            email_from = msg['from']
            print('From : ' + email_from + '\n')
            print('Subject : ' + email_subject + '\n')
            print(msg.get_payload(decode=True))

解决方案:

我在网上找到了一个解决方案,我想我会分享的情况下,它可以帮助别人下线。 谢谢你的帮助。

import imaplib
import base64
import os
import email

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

def extract_body(payload):
    if isinstance(payload,str):
        return payload
    else:
        return '\n'.join([extract_body(part.get_payload()) for part in payload])

conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login(email_user, email_pass)
conn.select('"1. Alerts"')
typ, data = conn.search(None, 'ALL')
try:
    for num in data[0].split():
        typ, msg_data = conn.fetch(num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                msg = email.message_from_bytes(response_part[1])
                gmail_subj =msg['subject']                   
                print(gmail_subj)
                gmail_from=msg['from']                   
                print(gmail_from)
                payload=msg.get_payload()
                # body=extract_body(payload)
                # print(body)
        typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
    try:
        conn.close()
    except:
        pass
    conn.logout()

给TA打赏
共{{data.count}}人
人已打赏
解决方案

当从视图绑定到控制器时,MVC4复杂对象为空。

2022-5-14 21:00:19

解决方案

React: 重塑行为

2022-5-14 21:00:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索