使用Python實(shí)現(xiàn)批量發(fā)送個(gè)性化郵件
前言
在現(xiàn)代工作環(huán)境中,我們經(jīng)常需要向多個(gè)收件人發(fā)送個(gè)性化的郵件。通過使用Python編程語言,我們可以自動(dòng)化這個(gè)過程,從Excel文件中讀取收件人和相關(guān)數(shù)據(jù),并發(fā)送定制的郵件。
首先,導(dǎo)入所需的庫(kù)
import pandas as pd import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication import os from email.header import Header
然后,設(shè)置發(fā)件人郵箱和密碼
sender_email = 'your_email@example.com' sender_password = 'your_password'
接下來,設(shè)置SMTP服務(wù)器和端口號(hào)(根據(jù)你使用的郵件服務(wù)提供商)
smtp_server = 'smtp.example.com' smtp_port = 587
創(chuàng)建SMTP連接并登錄到郵箱
server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 開啟TLS加密 server.login(sender_email, sender_password)
讀取原始Excel文件
df = pd.read_excel('path_to_excel_file.xlsx')獲取唯一的員工姓名列表
employee_names = df['員工姓名'].unique()
獲取員工姓名和對(duì)應(yīng)的郵箱地址,假設(shè)這些信息存儲(chǔ)在一個(gè)字典中
employee_emails = {
'張三': 'zhangsan@example.com',
'李四': 'lisi@example.com',
'王五': 'wangwu@example.com',
# 添加更多員工和郵箱信息
}遍歷員工數(shù)據(jù)并發(fā)送郵件
for employee_name in employee_names:
employee_data = df[df['員工姓名'] == employee_name] # 創(chuàng)建員工的數(shù)據(jù)
# 生成員工的 Excel 文件
employee_data_filename = f'{employee_name}.xlsx'
employee_data.to_excel(employee_data_filename, index=False)
# 創(chuàng)建郵件
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = employee_emails.get(employee_name, '') # 根據(jù)員工姓名獲取郵箱
msg['Subject'] = '拆分?jǐn)?shù)據(jù)通知'
body = f"尊敬的{employee_name},您的拆分?jǐn)?shù)據(jù)已經(jīng)準(zhǔn)備好,請(qǐng)查收附件。"
msg.attach(MIMEText(body, 'plain'))
# 添加附件
with open(employee_data_filename, 'rb') as file:
part = MIMEApplication(file.read(), Name=os.path.basename(employee_data_filename))
part.add_header('Content-Disposition', 'attachment', filename=Header(os.path.basename(employee_data_filename), 'utf-8').encode())
msg.attach(part)
# 發(fā)送郵件
server.sendmail(sender_email, employee_emails.get(employee_name, ''), msg.as_string())
# 刪除生成的員工數(shù)據(jù)文件
os.remove(employee_data_filename)
# 退出SMTP連接
server.quit()最后,關(guān)閉與SMTP服務(wù)器的連接。
總結(jié)
通過上述Python腳本,我們可以批量發(fā)送個(gè)性化的郵件。我們首先設(shè)置發(fā)件人郵箱和密碼,然后指定SMTP服務(wù)器和端口號(hào)。接下來,我們讀取包含員工信息的Excel文件,并獲取唯一的員工姓名列表和對(duì)應(yīng)的郵箱地址。然后,我們遍歷員工數(shù)據(jù),并為每個(gè)員工創(chuàng)建郵件,附帶相應(yīng)的附件。最后,我們通過SMTP服務(wù)器發(fā)送郵件,并在發(fā)送完成后刪除生成的員工數(shù)據(jù)文件。
完整代碼
import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os
from email.header import Header
# 設(shè)置發(fā)件人郵箱和密碼
sender_email = 'liuchunlin202205@163.com'
sender_password = '授權(quán)碼'
# 設(shè)置SMTP服務(wù)器和端口(QQ郵箱的SMTP服務(wù)器和端口)
smtp_server = 'smtp.163.com'
smtp_port = 25
# 創(chuàng)建SMTP連接
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # 開啟TLS加密
# 登錄郵箱
server.login(sender_email, sender_password)
# 讀取原始 Excel 文件
df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\測(cè)試數(shù)據(jù)\\員工.xlsx')
# 獲取唯一的員工姓名列表
employee_names = df['員工姓名'].unique()
# 獲取員工姓名和對(duì)應(yīng)的郵箱地址,假設(shè)這些信息存儲(chǔ)在一個(gè)字典中
employee_emails = {
'劉備': '2823028760@qq.com',
'孫權(quán)': '2823028760@qq.com',
'曹操': '2823028760@qq.com',
# 添加更多員工和郵箱信息
}
# 遍歷員工數(shù)據(jù)并發(fā)送郵件
for employee_name in employee_names:
# 創(chuàng)建員工的數(shù)據(jù)
employee_data = df[df['員工姓名'] == employee_name]
# 生成員工的 Excel 文件
employee_data_filename = f'{employee_name}.xlsx'
employee_data.to_excel(employee_data_filename, index=False)
employee_data_filename = f'{employee_name}.xlsx'
# 創(chuàng)建郵件
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = employee_emails.get(employee_name, '') # 根據(jù)員工姓名獲取郵箱
msg['Subject'] = '拆分?jǐn)?shù)據(jù)通知'
body = f"尊敬的{employee_name},您的拆分?jǐn)?shù)據(jù)已經(jīng)準(zhǔn)備好,請(qǐng)查收附件。"
msg.attach(MIMEText(body, 'plain'))
# 添加附件
with open(employee_data_filename, 'rb') as file:
part = MIMEApplication(file.read(), Name=os.path.basename(employee_data_filename))
part.add_header('Content-Disposition', 'attachment', filename=Header(os.path.basename(employee_data_filename), 'utf-8').encode())
msg.attach(part)
# 發(fā)送郵件
server.sendmail(sender_email, employee_emails.get(employee_name, ''), msg.as_string())
# 刪除生成的員工數(shù)據(jù)文件
os.remove(employee_data_filename)
# 退出SMTP連接
server.quit()到此這篇關(guān)于使用Python實(shí)現(xiàn)批量發(fā)送個(gè)性化郵件的文章就介紹到這了,更多相關(guān)Python發(fā)送郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解NumPy 的 np.column_stack的實(shí)現(xiàn)
本文主要介紹了NumPy 的 np.column_stack的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01
pytorch?dataset實(shí)戰(zhàn)案例之讀取數(shù)據(jù)集的代碼
這篇文章主要介紹了pytorch?dataset實(shí)戰(zhàn)案例讀取數(shù)據(jù)集的相關(guān)知識(shí),這段代碼可以作為讀取數(shù)據(jù)集的一個(gè)DataSet類的基礎(chǔ)類,可以擴(kuò)充進(jìn)行修改,以后有類似需要可以拿過來修改,本文結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
Python實(shí)現(xiàn)迷宮自動(dòng)尋路實(shí)例
大家好,本篇文章主要講的是Python實(shí)現(xiàn)迷宮自動(dòng)尋路實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
Python調(diào)用ChatGPT的API實(shí)現(xiàn)文章生成
最近ChatGPT大火,在3.5版本后開放了接口API,所以很多人開始進(jìn)行實(shí)操,這里我就用python來為大家實(shí)現(xiàn)一下,如何調(diào)用API并提問返回文章的說明2023-03-03
python數(shù)據(jù)類型_字符串常用操作(詳解)
下面小編就為大家?guī)硪黄猵ython數(shù)據(jù)類型_字符串常用操作(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05

