|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有一份工资明细的电子表格文件,每个员工对应有邮箱账号,现通过Python代码,实现把工资明细(含表头即工资项目)发送到每个员工的邮箱中。
工资表Salary.xlsx结构如图:
代码如下:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import openpyxl
file = r'.\Email\Salary.xlsx'
wb = openpyxl.load_workbook(file)
ws = wb['Sheet1']
# 设置登录及服务器信息
mail_host = 'smtp.163.com'
mail_user = '153*****123'
mail_pass = 'BJX*******UDVEG' #验证码(非邮箱登录密码)
sender = '153*****123@163.com'
result = list(ws.iter_rows(values_only=True))
title = result[0] # 通过之前返回数据可以看出第一行是标题 我们直接索引获取第一行
datas = result[1:] # 剩下除了第一行就是用例数据了 直接截取
for row in datas:
dict1 = dict(zip(title, row))
name = dict1.get('姓名', '未发现"姓名"字段')
receivers = dict1.get('邮箱', '未发现"邮箱"字段')
detail = ''
for k, v in dict1.items():
detail += str(k) + ":" + str(v) + '\n' 将工资项目与明细转换为文本字符
# 设置email信息,添加一个MIMEmultipart类,处理正文及附件
message = MIMEMultipart()
message['From'] = sender
message['To'] = receivers
message['Subject'] = f'亲爱的{name},这是您本月应得报酬,您辛苦了,感谢您的努力付出!'
message.attach(MIMEText(detail, 'plain', 'utf-8'))
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print(f'{name}的邮件发送成功!')
smtpObj.quit()
except smtplib.SMTPException as err:
print(f'{name}的邮件发送失败,请检查相关设置!', err)
欢迎交流指正! |
-
|