从Excel中用Python创建已跳转电子邮件和成功电子邮件的列表

从Excel中用Python创建已跳转电子邮件和成功电子邮件的列表,python,pandas,csv,smtp,mime,Python,Pandas,Csv,Smtp,Mime,这是所需的输出,其中红色突出显示的电子邮件是反弹电子邮件: 我希望Python脚本能够抓取Gmail上的收件箱/发送邮件,并相应地编辑Excel上的电子邮件列表,以区分被退回的电子邮件和成功发送的电子邮件 以下是我目前掌握的情况: import smtplib, email, imaplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from tkinter impor

这是所需的输出,其中红色突出显示的电子邮件是反弹电子邮件:

我希望Python脚本能够抓取Gmail上的收件箱/发送邮件,并相应地编辑Excel上的电子邮件列表,以区分被退回的电子邮件和成功发送的电子邮件

以下是我目前掌握的情况:

import smtplib, email, imaplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from tkinter import *
from tkinter import messagebox
import time
import pandas as pd
from datetime import datetime
import csv

def checking(user, pwd):

# need to turn on 'Allow less secure apps' in your gmail account
M = imaplib.IMAP4_SSL("imap.gmail.com")
M.login(user, pwd)

# Check Sent Mail Box
M.select('"[Gmail]/Sent Mail"')
resp, items = M.search(None,"All")
items = items[0].split()

# Obtain the emails sent out
#count = 0
inbox = {}
for item in items:

    # getting email content
    resp, data = M.fetch(item, "(RFC822)")
    email_content = data[0][1]
    msg = email.message_from_bytes(email_content)
    content_list = msg.as_bytes().decode(encoding='UTF-8').split('\n')

    # retrieve email address sent out
    for cl in content_list:
        if cl.startswith('To: '):
            inbox[cl.replace("To: ",'').strip()] = 1
    # print current process
    #count += 1
    #if count % 100 == 0:
    #    print(count)

fail_content = ['Delivery Status Notification (Failure)','Undeliverable:','DELIVERY FAILURE:','Returned mail:','Undelivered Mail Returned to Sender']

# check Inbox
M.select('INBOX')
resp, items = M.search(None,"All")
items = items[0].split()

#count = 1
# for each email in inbox
for item in items:
    resp, data = M.fetch(item, "(RFC822)")
    email_content = data[0][1]
    msg = email.message_from_bytes(email_content)

    # check for all possible fail content
    for fc in fail_content:
        if fc in msg['Subject']:
            # get email content
            content_list = msg.as_bytes().decode(encoding='UTF-8')
            # find its sender
            for eo in inbox:
                if eo in content_list:
                    inbox[eo] = 0

M.close()
M.logout()

return inbox

到目前为止,我的代码只是读取gmail,但即使这样也不起作用。我对这个很陌生。所以,请编辑我的代码。

这是否回答了您的问题@不,那不一样。这回答了你的问题吗@不,那不一样。