You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:37:24