试着写成文档格式~~~,写着玩哈,别喷!
疫情期间,公司要求每天上下班邮件打卡,由于重复性强,且内容基本不变,可以考虑用程序一键完成。
用户通过bat脚本来执行程序,首次使用,需要用姓名替换bat脚本中的name字符串。
outlook_auto.bat
python outlook_auto.py name
pause
python程序中可以读取sys.argv[1]获得用户姓名。将主送和抄送写成列表,然后用分号连接成字符串,方便以后扩展。通过time.strftime()获取当前时间,根据AM/PM判断是到岗还是离岗。由于strftime()方法貌似不支持中文,所以需要通过format()将时间格式化成年月日的形式,最后连接成需求所要求的主题样式。
所有变量设置好后,就可以调用pywin32模块中的Windows API,实现一个函数去发送邮件,后续内容参考连接:Python调用outlook发送邮件,发送给多人、抄送给多人并带上附件
outlook_auto.py
#! python3
import win32com.client as win32
import time, sys
name = sys.argv[1] #通过命令行参数输入姓名
addressee_list = ['[email protected]',
'[email protected]',
'[email protected]']
addressee_str = ';'.join(addressee_list) #主送人列表
cc_list = ['[email protected]',
'[email protected]',
'[email protected]']
cc_str = ';'.join(cc_list) #抄送人列表
time_str = time.strftime("%Y{}%m{}%d{}%p",time.localtime())
time_subgect = time_str.format('年','月','日')
stat = '到岗' if time_str[-2:] == 'AM' else '离岗'
subgect_str = time_subgect[:-2] + '-软件开发部-' + name + '-' + stat #主题内容
content = '上下班打卡' #正文内容
def outlook():
olook = win32.Dispatch("outlook.Application")
mail = olook.CreateItem(0)
mail.To = addressee_str
mail.CC = cc_str
mail.Subject = subgect_str
mail.Body = content
mail.Send()
if __name__ == '__main__':
outlook()
print("send email ok!!!!!!!!!!")