本文介绍了一个Python程序,用Py做可视化窗口(用于批量生成邮件草稿), 窗口可以选择对应的文件路径存放所生成的文件夹,选择指定路径下的excel提取excel的每一列的内容,供应商名称作为每个邮件的首行,供应商邮箱作为邮件发送地址,对应供应商要降价的数字,当前供应商的联系人,在可视化窗口里面编辑对应的文字,将文字中的%%%替换成刚才描述的供应商的联系人,将文字中的¥¥¥替换成刚才描述的数字,点击生成即可生成Outlook里面的新草稿邮件等待发送。
import os
import PySimpleGUI as sg
import openpyxl
import win32com.client as win32
# 定义窗口布局
layout = [
[sg.Text('请选择存放生成文件夹的路径')],
[sg.InputText(key='-FOLDER-', size=(40, 1)), sg.FolderBrowse()],
[sg.Text('请选择Excel文件')],
[sg.InputText(key='-FILE-', size=(40, 1)), sg.FileBrowse(file_types=(("Excel Files", "*.xlsx"),))],
[sg.Button('读取Excel'), sg.Button('一键提取'), sg.Button('生成邮件'), sg.Button('退出')],
[sg.Multiline(size=(80, 10), key='-OUTPUT-', disabled=True)],
[sg.Text('编辑邮件内容:')],
[sg.Multiline(size=(80, 15), key='-EMAIL_CONTENT-')],
]
window = sg.Window('APP-007_Auto Email Editing ---AUTHOR: DIETER', layout)
# 存储提取的数据
suppliers_data = []
while True:
event, values = window.read()
if event in (None, '退出'):
break
# 读取文件路径
file_path = values['-FILE-']
# 检查是否选择了文件
if not file_path or not os.path.exists(file_path):
sg.popup_error('请先选择正确的文件路径')
continue
try:
# 打开Excel并读取数据
wb = openpyxl.load_workbook(file_path)
sheet = wb.active
data = list(sheet.values)
# 提取数据
suppliers_data = list(zip(*data)) # 获取所有列信息
output = f"总共有{len(suppliers_data[0])}条记录。\n"
for i, supplier in enumerate(zip(*suppliers_data)):
name, email, discount, contact, phone = supplier
output += f"{i + 1}. 供应商名称: {name}, 邮箱: {email}, 降价金额: ¥{discount}, 联系人: {contact}, 联系电话: {phone}\n"
window['-OUTPUT-'].update(output)
except Exception as e:
sg.popup_error(f"发生错误: {str(e)}")
window['-OUTPUT-'].update(f"发生错误: {str(e)}")
if event == '一键提取':
if not suppliers_data:
sg.popup_error('请先读取Excel文件')
continue
# 提取行数并显示
num_rows = len(suppliers_data[0])
sg.popup(f"总共有 {num_rows} 条记录。")
if event == '生成邮件':
if not suppliers_data:
sg.popup_error('请先读取Excel文件')
continue
# 获取邮件内容
email_template = values['-EMAIL_CONTENT-']
outlook = win32.Dispatch('outlook.application')
for supplier in zip(*suppliers_data):
name, email, discount, contact, phone = supplier
# 替换占位符
email_content = email_template.replace('%%%', contact).replace('¥¥¥', str(discount))
# 创建新邮件草稿
mail = outlook.CreateItem(0)
mail.To = email
mail.Subject = f"{name} 的降价通知"
mail.Body = email_content
mail.Display() # 显示邮件草稿
sg.popup("邮件草稿已生成,等待发送。")
window.close()
我已经制作成了APP,并且基于此代码做了升级和更新, 没有python的电脑上面都可以操作,小程序
价格:20RMB/个(通用型),需要的留言。;
非通用型价格另算,可做数据定制处理等脚本开发,需要的留言。