【问题标题】:Sending Email to different recipients with different file attachments using python使用python向具有不同文件附件的不同收件人发送电子邮件
【发布时间】:2020-04-04 22:56:56
【问题描述】:

您好,我是学习 python 的新手,我正在尝试向数百个不同的收件人发送电子邮件,每个收件人都有不同的附件。我有一个数据库中的收件人数据和一个包含所有文件的文件夹。

数据库有供应商 ID、名称和电子邮件

Database example

文件夹结构只是一个包含所有文件的文件夹,例如:

Folder screenshot

供应商文件夹 --

123.xls

123.pdf

456.xls

789.pdf

任何有关如何开始使用此功能的指导表示赞赏。谢谢

【问题讨论】:

标签: python email email-attachments smtplib


【解决方案1】:

在此示例中,我将使用我对另一个问题 (How do I attach separate PDF's to contact list email addresses using Python?) 给出的答案,我使用包含地址和对应于它的文件路径的 csv 文件,如下所示:

users.csv:

带有 csv 文件的文件夹:

这是代码:

import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from string import Template
import pandas as pd

# read the file containing the database with the mail and the corresponding file
e = pd.read_csv("users.csv")
# In this example we will use gmail 
context = ssl.create_default_context()
server = smtplib.SMTP_SSL('smtp.gmail.com', 465,context=context)
server.login('mymail@gmail.com','mypass')

body = ("""
Hi there

Test message

Thankyou
""")
subject = "Send emails with attachment"
fromaddr='mymail@gmail.com'

for index, row in e.iterrows():
    print (row["Emails"]+row["csv"])
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))
    filename = row["csv"]
    toaddr = row["Emails"]
    attachment = open(row["csv"], "rb")
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
    msg.attach(part)
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)

print("Emails sent successfully")

server.quit()

如果您使用 gmail 帐户,请检查您是否有权从其他类型的客户端发送电子邮件 (https://support.google.com/accounts/answer/6010255)

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多