使用Python實現(xiàn)批量發(fā)送個性化郵件
前言
在現(xiàn)代工作環(huán)境中,我們經常需要向多個收件人發(fā)送個性化的郵件。通過使用Python編程語言,我們可以自動化這個過程,從Excel文件中讀取收件人和相關數(shù)據,并發(fā)送定制的郵件。
首先,導入所需的庫
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
然后,設置發(fā)件人郵箱和密碼
sender_email = 'your_email@example.com' sender_password = 'your_password'
接下來,設置SMTP服務器和端口號(根據你使用的郵件服務提供商)
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()
獲取員工姓名和對應的郵箱地址,假設這些信息存儲在一個字典中
employee_emails = {
'張三': 'zhangsan@example.com',
'李四': 'lisi@example.com',
'王五': 'wangwu@example.com',
# 添加更多員工和郵箱信息
}遍歷員工數(shù)據并發(fā)送郵件
for employee_name in employee_names:
employee_data = df[df['員工姓名'] == employee_name] # 創(chuàng)建員工的數(shù)據
# 生成員工的 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, '') # 根據員工姓名獲取郵箱
msg['Subject'] = '拆分數(shù)據通知'
body = f"尊敬的{employee_name},您的拆分數(shù)據已經準備好,請查收附件。"
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ù)據文件
os.remove(employee_data_filename)
# 退出SMTP連接
server.quit()最后,關閉與SMTP服務器的連接。
總結
通過上述Python腳本,我們可以批量發(fā)送個性化的郵件。我們首先設置發(fā)件人郵箱和密碼,然后指定SMTP服務器和端口號。接下來,我們讀取包含員工信息的Excel文件,并獲取唯一的員工姓名列表和對應的郵箱地址。然后,我們遍歷員工數(shù)據,并為每個員工創(chuàng)建郵件,附帶相應的附件。最后,我們通過SMTP服務器發(fā)送郵件,并在發(fā)送完成后刪除生成的員工數(shù)據文件。
完整代碼
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
# 設置發(fā)件人郵箱和密碼
sender_email = 'liuchunlin202205@163.com'
sender_password = '授權碼'
# 設置SMTP服務器和端口(QQ郵箱的SMTP服務器和端口)
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\\測試數(shù)據\\員工.xlsx')
# 獲取唯一的員工姓名列表
employee_names = df['員工姓名'].unique()
# 獲取員工姓名和對應的郵箱地址,假設這些信息存儲在一個字典中
employee_emails = {
'劉備': '2823028760@qq.com',
'孫權': '2823028760@qq.com',
'曹操': '2823028760@qq.com',
# 添加更多員工和郵箱信息
}
# 遍歷員工數(shù)據并發(fā)送郵件
for employee_name in employee_names:
# 創(chuàng)建員工的數(shù)據
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, '') # 根據員工姓名獲取郵箱
msg['Subject'] = '拆分數(shù)據通知'
body = f"尊敬的{employee_name},您的拆分數(shù)據已經準備好,請查收附件。"
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ù)據文件
os.remove(employee_data_filename)
# 退出SMTP連接
server.quit()到此這篇關于使用Python實現(xiàn)批量發(fā)送個性化郵件的文章就介紹到這了,更多相關Python發(fā)送郵件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python+moviepy實現(xiàn)音頻/視頻提取器
這篇文章主要為大家詳細介紹了如何使用Python和wxPython構建的音頻/視頻提取器應用程序,允許用戶從視頻文件中提取音頻,或者從音頻文件中截取特定時間段,需要的可以參考下2024-10-10
使用pyinstaller打包PyQt4程序遇到的問題及解決方法
今天小編就為大家分享一篇使用pyinstaller打包PyQt4程序遇到的問題及解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python并發(fā)concurrent.futures和asyncio實例
這篇文章主要介紹了Python并發(fā)concurrent.futures和asyncio實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python實現(xiàn)在matplotlib中兩個坐標軸之間畫一條直線光標的方法
這篇文章主要介紹了Python實現(xiàn)在matplotlib中兩個坐標軸之間畫一條直線光標的方法,涉及Python操作matplotlib模塊繪圖的相關技巧,需要的朋友可以參考下2015-05-05
Anaconda配置pytorch-gpu虛擬環(huán)境的圖文教程
這篇文章主要介紹了Anaconda配置pytorch-gpu虛擬環(huán)境步驟整理,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
三步實現(xiàn)Django Paginator分頁的方法
這篇文章主要介紹了三步實現(xiàn)Django Paginator分頁的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06
詳解四種Python中基本形態(tài)學濾波的實現(xiàn)
最基礎的形態(tài)學操作有四個,分別是腐蝕、膨脹、開計算和閉計算。這篇文章主要介紹了這四種形態(tài)學濾波的實現(xiàn),感興趣的小伙伴可以跟隨小編一起學習一下2023-04-04

