近几天在问答区遇到这么一个问题,感觉还挺有意思。
楼主由于公司权限管控没办法调用outlook Smtp协议,想要使用 win32com 模块进行发送多封邮件的操作,联系人等储存在 excel 中。
思路:
使用 xlrd 读取表格内容,使用win32com进行邮件的编写。
实践:
创建实验数据
代码:
#导入库
import win32com.client
import xlrd
outlook = win32com.client.Dispatch("Outlook.Application")
path = r'C:\Users\asdss\Desktop\实验场(实时删除)\我是附件.txt'
wb = xlrd.open_workbook(r'C:\Users\asdss\Desktop\实验场(实时删除)\联系人.xlsx')
ws = wb.sheet_by_index(0)
nrows = ws.nrows #获取总行数
intent = [ws.row_values(i) for i in range(1,nrows)] #第一行是标题,不要
for i in range(len(intent)):
mail = outlook.CreateItem(0) # 生成邮件
mail.SentOnBehalfOfName='paaaasdce@maasds.com' #指定发送邮箱
mail.To = intent[i][0] # 收件人
mail.CC = intent[i][1] # 抄送
mail.BCC = intent[i][2] # 密件抄送
mail.Subject='这里是主题'
mail.HTMLBody = '''<body>hello</body>''' #html代码,邮件内容
mail.Attachments.Add(path) #添加附件
mail.Save() # 保存邮件,必需
结果:
邮件会出现在个人邮箱的草稿