Python脚本执行完成后自动通过Outlook发送日志文件方案咨询
实现Python脚本运行后自动通过Outlook发送日志附件
核心思路
直接调用本地Outlook客户端发送邮件比用smtplib更省心,不需要配置SMTP服务器、端口和授权码,适合新手快速实现需求。
修改后的完整代码
import logging import datetime import win32com.client as win32 def setup_logger(): logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 防止重复添加日志处理器 if not logger.handlers: formatter = logging.Formatter('%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s') now = datetime.datetime.now() filename = now.strftime('new_logfile_%Y-%m-%d--%H-%M-%S.log') file_handler = logging.FileHandler(filename) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger, filename def send_outlook_email(log_file): # 启动Outlook客户端 outlook = win32.Dispatch('Outlook.Application') mail_item = outlook.CreateItem(0) # 配置邮件信息 mail_item.To = '收件人邮箱@xxx.com' # 替换成实际收件人邮箱 mail_item.Subject = f'脚本运行日志 - {datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' mail_item.Body = '本次Python脚本运行完成,附件为生成的日志文件,请查收。' # 添加日志附件 mail_item.Attachments.Add(log_file) # 发送邮件 mail_item.Send() if __name__ == '__main__': # 初始化日志并获取日志文件名 logger, log_filename = setup_logger() # 原有业务逻辑 a = 5 b = 0 try: c = a / b logger.info(f'计算结果:{c}') except Exception as e: logger.exception("Exception occurred") # 发送日志邮件 send_outlook_email(log_filename)
操作步骤
- 安装依赖:在命令行执行
pip install pywin32 - 修改代码中的
收件人邮箱@xxx.com为实际要发送的邮箱地址 - 运行脚本,本地Outlook会自动完成邮件发送
注意点
- 必须确保本地已安装Outlook客户端,且已登录有效的邮箱账号
- 另一个脚本可以直接复用
send_outlook_email函数,只需在脚本末尾传入对应的日志文件名即可
内容的提问来源于stack exchange,提问作者lAkShMipythonlearner
相关产品推荐
相关产品推荐

