当前位置: 首页 > news >正文

Python 脚本来自动发送每日电子邮件报告

  1. 安装必要的库
    我们将使用 smtplib 发送邮件,以及 email.mime 来创建电子邮件内容。另外,为了让脚本自动定时运行,可以使用操作系统的计划任务工具(如 Linux 的 cron 或 Windows 的 Task Scheduler)。

  2. 创建邮件内容
    使用 MIMEText 来创建纯文本电子邮件,或使用 MIMEMultipart 来添加附件或 HTML 内容。

  3. 发送电子邮件
    使用 smtplib.SMTP 连接到电子邮件服务器并发送邮件。

  4. 计划自动运行脚本
    在 Linux 上使用 cron,在 Windows 上使用 Task Scheduler。

Step 1: 安装所需库

有些 Python 安装可能没有 smtplibemail 模块。它们是 Python 标准库的一部分,不需要额外安装,但如果你想发送 HTML 报告或者添加其他依赖库,可以使用 pip 安装所需库。

pip install email

Step 2: 编写发送邮件的脚本

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from datetime import datetime# 邮件服务器的设置
SMTP_SERVER = "smtp.example.com"  # 例如Gmail的SMTP服务器: smtp.gmail.com
SMTP_PORT = 587
EMAIL = "your_email@example.com"  # 发送邮件的邮箱
PASSWORD = "your_password"        # 邮箱密码或应用授权码# 收件人的邮箱
TO_EMAIL = "recipient@example.com"def send_email(subject, body):# 创建MIME消息msg = MIMEMultipart()msg['From'] = EMAILmsg['To'] = TO_EMAILmsg['Subject'] = subject# 添加邮件正文内容msg.attach(MIMEText(body, 'plain'))try:# 连接到SMTP服务器并发送邮件server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)server.starttls()  # 启用TLS加密server.login(EMAIL, PASSWORD)text = msg.as_string()server.sendmail(EMAIL, TO_EMAIL, text)server.quit()print(f"邮件发送成功: {subject}")except Exception as e:print(f"邮件发送失败: {str(e)}")def daily_report():# 生成每日报告的内容today = datetime.now().strftime("%Y-%m-%d")subject = f"Daily Report for {today}"body = f"This is the daily report for {today}."# 发送报告邮件send_email(subject, body)if __name__ == "__main__":daily_report()

Step 3: 运行脚本前的设置

  1. 邮箱配置:
    你需要使用自己的电子邮件服务提供商的 SMTP 设置来替换代码中的 SMTP_SERVERSMTP_PORT,并输入你的电子邮件和密码。注意,有些邮件提供商(如 Gmail)可能需要生成一个应用专用密码而不是直接使用你的邮箱密码。

    Gmail 的配置示例:

    SMTP_SERVER = "smtp.gmail.com"
    SMTP_PORT = 587
    EMAIL = "your_email@gmail.com"
    PASSWORD = "your_app_specific_password"
    
  2. 允许安全应用访问:
    如果你使用 Gmail 发送电子邮件,你可能需要启用 “允许不太安全的应用程序访问” 或者创建一个 “应用程序专用密码”。

Step 4: 设置自动发送(计划任务)

Linux - 使用 cron

  1. 打开 crontab 编辑器:

    crontab -e
    
  2. 添加以下条目来每天在固定时间运行脚本(例如,每天早上8点):

    0 8 * * * /usr/bin/python3 /path/to/your/script.py
    

Windows - 使用 Task Scheduler:

  1. 打开任务计划程序,创建一个新的任务。
  2. 在触发器中,设置为每日运行。
  3. 在操作中,选择“启动程序”,并输入 python 解释器的路径和脚本的路径。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=307etcpbyuuc8

http://www.lryc.cn/news/460456.html

相关文章:

  • 大语言模型与ChatGPT:深入探索与应用
  • 【从零开始的LeetCode-算法】3164.优质数对的总数 II
  • FastDFS VS MinIO:文件存储与对象存储的抉择(包含SpringBoot集成FastDFS范例)
  • 【Redis】缓存预热、雪崩、击穿、穿透、过期删除策略、内存淘汰策略
  • 【LeetCode】每日一题 2024_10_15 三角形的最大高度(枚举、模拟)
  • 2024版最新网络安全工程师入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
  • vue中关于router.beforeEach()的用法
  • C++模板初阶,只需稍微学习;直接起飞;泛型编程
  • 【数据结构 | 红黑树】红黑树的性质和插入结点时的调整
  • mysql学习教程,从入门到精通,SQL导入数据(44)
  • 【SpringAI】(二)让你的Java程序接入大模型——适合Java宝宝的大模型应用开发
  • 音频剪辑在线工具 —— 让声音更精彩
  • ​http短连接和长连接​
  • 日志分析删除
  • DART: Implicit Doppler Tomography for Radar Novel View Synthesis 笔记
  • redis-cli执行lua脚本
  • MySQL9的3个新特性
  • 《网络基础之 HTTP 协议:状态码含义全解析》
  • java真的正在越来越失去竞争力了吗
  • 【通过zip方式安装mysql服务】
  • 每日OJ题_WY3小易的升级之路_数学模拟_C++_Java
  • python xml的读取和写入
  • WebGL 小白入门学习
  • OSI七层协议
  • 超平面(Hyperplane)和半空间(Halfspace)
  • TCP(Transmission Control Protocol,传输控制协议)整理
  • R语言绘制线性回归图
  • C++进阶:map和set的使用
  • 深入理解C++ STL中的 vector
  • MySQL 安装与配置详细教程