首页 > 编程语言 >使用Python批量发送个性化邮件

使用Python批量发送个性化邮件

时间:2023-10-31 22:22:50浏览次数:29  
标签:Python server 员工 个性化 employee filename data email 邮件

前言

在现代工作环境中,我们经常需要向多个收件人发送个性化的邮件。通过使用Python编程语言,我们可以自动化这个过程,从Excel文件中读取收件人和相关数据,并发送定制的邮件。

首先,导入所需的库:

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

然后,设置发件人邮箱和密码:

sender_email = '[email protected]'
sender_password = 'your_password'

接下来,设置SMTP服务器和端口号(根据你使用的邮件服务提供商):

smtp_server = 'smtp.example.com'
smtp_port = 587

创建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 = {
    '张三': '[email protected]',
    '李四': '[email protected]',
    '王五': '[email protected]',
    # 添加更多员工和邮箱信息
}

遍历员工数据并发送邮件:

for employee_name in employee_names:
    employee_data = df[df['员工姓名'] == employee_name]  # 创建员工的数据

    # 生成员工的 Excel 文件
    employee_data_filename = f'{employee_name}.xlsx'
    employee_data.to_excel(employee_data_filename, index=False)

    # 创建邮件
    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = employee_emails.get(employee_name, '')  # 根据员工姓名获取邮箱
    msg['Subject'] = '拆分数据通知'

    body = f"尊敬的{employee_name},您的拆分数据已经准备好,请查收附件。"
    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)

    # 发送邮件
    server.sendmail(sender_email, employee_emails.get(employee_name, ''), msg.as_string())

    # 删除生成的员工数据文件
    os.remove(employee_data_filename)

# 退出SMTP连接
server.quit()

最后,关闭与SMTP服务器的连接。

总结

通过上述Python脚本,我们可以批量发送个性化的邮件。我们首先设置发件人邮箱和密码,然后指定SMTP服务器和端口号。接下来,我们读取包含员工信息的Excel文件,并获取唯一的员工姓名列表和对应的邮箱地址。然后,我们遍历员工数据,并为每个员工创建邮件,附带相应的附件。最后,我们通过SMTP服务器发送邮件,并在发送完成后删除生成的员工数据文件。

完整代码:

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

# 设置发件人邮箱和密码
sender_email = '[email protected]'
sender_password = '授权码'

# 设置SMTP服务器和端口(QQ邮箱的SMTP服务器和端口)
smtp_server = 'smtp.163.com'
smtp_port = 25

# 创建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\\测试数据\\员工.xlsx')

# 获取唯一的员工姓名列表
employee_names = df['员工姓名'].unique()

# 获取员工姓名和对应的邮箱地址,假设这些信息存储在一个字典中
employee_emails = {
    '刘备': '[email protected]',
    '孙权': '[email protected]',
    '曹操': '[email protected]',
    # 添加更多员工和邮箱信息
}

# 遍历员工数据并发送邮件
for employee_name in employee_names:
    # 创建员工的数据
    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'

    # 创建邮件
    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = employee_emails.get(employee_name, '')  # 根据员工姓名获取邮箱
    msg['Subject'] = '拆分数据通知'

    body = f"尊敬的{employee_name},您的拆分数据已经准备好,请查收附件。"
    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)

    # 发送邮件
    server.sendmail(sender_email, employee_emails.get(employee_name, ''), msg.as_string())

    # 删除生成的员工数据文件
    os.remove(employee_data_filename)

# 退出SMTP连接
server.quit()

 

标签:Python,server,员工,个性化,employee,filename,data,email,邮件
From: https://www.cnblogs.com/lcl-cn/p/17801752.html

相关文章

  • Python算圆周率
    importsysimporttimedefprogress_bar():    foriinrange(1,101):        print("\r",end="")        print("Downloadprogress:{}%:".format(i),"▋"*(i//2),end="")        s......
  • Python 数学函数和 math 模块指南
    Python提供了一组内置的数学函数,包括一个广泛的数学模块,可以让您对数字执行数学任务。内置数学函数。min()和max()函数可用于在可迭代对象中查找最低或最高值:示例:查找可迭代对象中的最低或最高值:x=min(5,10,25)y=max(5,10,25)print(x)print(y)abs()函数返回......
  • python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
    全文链接:https://tecdat.cn/?p=34123原文出处:拓端数据部落公众号分析师:YuyanWang虽然中国股票市场日益完善,但还不完全是弱有效市场,因此中国股票市场存在比较明显的通过技术分析达到的套利机会。解决方案任务/目标根据基金净值的要求,运用多种模型分析实现股票走势的预测。......
  • python__re模块&正则表达式*正则表达式练习题
    1、如下图是python中的re模块的讲解,已经正则表达式的基础知识2、python正则表达式训练题(网上找的,最后附上了地址)1.\d,\W,\s,\B,.,*,+,?分别是什么?\d:数字\W:非英文数字下划线的任意字符\s:任意空白字符\B:非单词开始或结尾的位置.表示非换行符的任意字符*表示匹配前面子表达式0次或多次......
  • Python - pip 加速
    #持久加速mkdir-p~/.pip#清华sourcecat<<EOF>~/.pip/pip.conf[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simple[install]trusted-host=pypi.tuna.tsinghua.edu.cnEOF#豆瓣源sourcecat<<EOF>~/.pip/pip.conf[global]inde......
  • linux 安装 python3.10
    aptupdateaptinstallbuild-essentialzlib1g-devlibncurses5-devlibgdbm-devlibnss3-devlibssl-devlibreadline-devlibffi-devlibsqlite3-devwgetcurlllvmlibncurses5-devlibncursesw5-devxz-utilstk-devlibffi-devliblzma-devpython3-opensslgitwget......
  • Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一起(方法二)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了两种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【瑜亮老师】另外再给了一个代码和思路,如下所示:#读......
  • # yyds干货盘点 # Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了两种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【瑜亮老师】另外再给了一个代码和思路,如下所示:#读取Excel......
  • 软件测试|Python对JSON的解析和创建详解
    简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,已经成为当今互联网应用中广泛使用的数据格式之一。Python提供了内置的模块来解析和创建JSON数据,使得在Python中处理JSON变得非常简单。本文将详细介绍Python对JSON的解析和创建过程,并提供示例代码来帮助大家更好......
  • 软件测试|Python科学计算神器numpy教程(十二)
    简介NumPy是Python中用于科学计算的一个强大的库,其中包含了丰富的数学和统计函数。这些统计函数允许用户对数组进行各种统计计算,例如平均值、标准差、方差、最大值、最小值等。在本文中,我们将详细介绍NumPy中一些常用的统计函数及其用法。统计函数示例numpy.amin()和numpy.......