csv 从Excel中用Python创建一个退回邮件和成功邮件列表

67up9zun  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(122)

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

我想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,但即使这样也不工作。我在这方面非常新。所以请编辑我的代码。

vmpqdwk3

vmpqdwk31#

我认为反弹检测工作在电子邮件端而不是smtp端,在smtplib:/中也没有这样的例外,我从长期的研究经验来谈,您可以尝试第三方apis,如:https://www.abstractapi.com/

相关问题