victory的博客

长安一片月,万户捣衣声

0%

pypiwin32 | 批量发送不同内容的邮件给不同的收件人

批量发送不同内容的邮件给不同的收件人

程序实现自动将’年假_按部门’下各个部门的年假情况Excel表格发送给’邮件地址.xlsx’中各个部门的负责人。

实现代码:

import os
from openpyxl import load_workbook

wb = load_workbook("邮件地址.xlsx")
ws = wb.active
address = {}
for i in range(2, ws.max_row + 1):
    dept = ws["A" + str(i)].value
    to_add = ws["B" + str(i)].value
    cc_add = ws["C" + str(i)].value
    address[dept] = [to_add, cc_add]

import win32com.client as win32


def Send_mail(to_add, cc_add, file_path, dept):
    '''
    传入参数说明:
    to_add,收件人地址
    cc_add,抄送地址
    file_path,附件路径
    dept,部门名称
    '''
    outlook = win32.Dispatch('Outlook.Application')  # 调用windows outlook应用
    mail = outlook.CreateItem(0)  # 创建邮件
    mail.to = to_add  # 收件人
    mail.cc = cc_add  # 抄送人
    mail.Subject = "{}年假情况".format(dept)  # 主题
    mail.Attachments.Add(file_path)  # 添加附件。若有多个附件,则多调用几次即可
    mail.Body = '''Dear All,\n这是{}的年假情况,请查收!谢谢。\n\nBest regards!\n人事部 小李'''.format(dept)  # 正文内容
    mail.Send()  # 发送邮件


# 发送邮件到各部门
for dept in address.keys():
    to_add = address[dept][0]
    cc_add = address[dept][1]
    file_path = os.getcwd() + '\\年假_按部门\\年假情况_{}.xlsx'.format(dept)
    Send_mail(to_add, cc_add, file_path, dept)

print("邮件发送完成。")

‘年假_按部门’文件夹包括以下内容:
年假情况_人事部.xlsx
年假情况_关务部.xlsx
年假情况_品质部.xlsx
年假情况_工程部.xlsx
年假情况_总务部.xlsx
年假情况_物料部.xlsx
年假情况_生产部.xlsx
年假情况_研发部.xlsx
年假情况_船务部.xlsx
年假情况_采购部.xlsx

邮件地址.xlsx