📅  最后修改于: 2023-12-03 15:04:11.652000             🧑  作者: Mango
本文介绍了如何使用Python编写程序,从电子表格中读取数据并向电子邮件列表发送电子邮件。这种技术在自动化发送邮件、批量发送邮件以及从电子表格中获取收件人和内容等方面非常有用。
在开始之前,我们需要准备一些工作:
安装Python:确保你的电脑上安装了Python的最新版本。你可以从官方网站(https://www.python.org)下载并安装。
安装所需的库:我们将使用openpyxl
库来读取电子表格数据,并使用smtplib
库来发送电子邮件。可以使用以下命令来安装这些库:
pip install openpyxl
pip install secure-smtplib
准备电子表格和电子邮件列表:将电子表格准备好,并确保其中包含需要发送的邮件内容及收件人的信息,如收件人姓名、电子邮件地址等。
下面是一个示例代码,演示了如何从电子表格中读取数据并向电子邮件列表发送邮件:
import openpyxl
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(email, password, smtp_server, smtp_port, subject, body, recipients):
# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(email, password)
for recipient in recipients:
# 创建邮件内容
message = MIMEMultipart()
message['From'] = email
message['To'] = recipient['email']
message['Subject'] = subject
# 添加邮件正文
message.attach(MIMEText(body, 'plain'))
# 发送邮件
server.send_message(message)
# 断开与SMTP服务器的连接
server.quit()
def send_emails_from_spreadsheet(email, password, smtp_server, smtp_port, subject, body, spreadsheet_file):
# 打开电子表格文件
workbook = openpyxl.load_workbook(spreadsheet_file)
sheet = workbook.active
# 获取收件人列表
recipients = []
for row in sheet.iter_rows(min_row=2, values_only=True):
recipient = {
'name': row[0],
'email': row[1]
}
recipients.append(recipient)
# 发送邮件
send_email(email, password, smtp_server, smtp_port, subject, body, recipients)
if __name__ == '__main__':
email = 'your_email@example.com'
password = 'your_password'
smtp_server = 'smtp.example.com'
smtp_port = 587
subject = 'Test Email'
body = 'This is a test email.'
spreadsheet_file = 'recipients.xlsx'
send_emails_from_spreadsheet(email, password, smtp_server, smtp_port, subject, body, spreadsheet_file)
将上述代码保存为一个Python程序文件,例如send_emails.py
。
将你的电子表格文件(包含收件人列表)保存在与Python程序文件相同的目录中,并将文件名更新到代码中的spreadsheet_file
变量中。
将你的电子邮件地址、密码、SMTP服务器和端口等信息更新到代码中的相应变量中。
运行Python程序。
程序将从电子表格中读取收件人列表,并向每个收件人发送一封包含指定主题和内容的电子邮件。
以上就是使用Python从电子表格向电子邮件列表发送邮件的完整过程。你可以根据自己的需求,定制代码并扩展功能。