用Python编写自动发送每日电子邮件报告的脚本

发布于:2024-06-10 ⋅ 阅读:(51) ⋅ 点赞:(0)

为了用 Python 编写自动发送每日电子邮件报告的脚本,你可以使用 smtplib 库来发送电子邮件,使用 email 库来创建电子邮件内容。此外,你可以使用 schedule 库来安排每天发送邮件的任务。以下是一个示例脚本以及如何设置和运行它的指导。

步骤 1: 安装必要的库

在开始之前,请确保你已经安装了必要的库。如果没有安装,可以使用以下命令来安装它们:

pip install schedule

步骤 2: 编写发送电子邮件的脚本

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import schedule
import time

def send_email():
    # 设置电子邮件服务器和登录信息
    smtp_server = 'smtp.example.com'  # 你的SMTP服务器地址
    smtp_port = 587  # 你的SMTP服务器端口
    smtp_user = 'your_email@example.com'  # 你的邮箱地址
    smtp_password = 'your_password'  # 你的邮箱密码

    # 设置收件人信息
    to_address = 'recipient@example.com'  # 收件人邮箱地址

    # 创建邮件对象
    msg = MIMEMultipart()
    msg['From'] = smtp_user
    msg['To'] = to_address
    msg['Subject'] = '每日报告'

    # 邮件正文内容
    body = '这是自动发送的每日报告。'

    # 将正文添加到邮件对象中
    msg.attach(MIMEText(body, 'plain'))

    try:
        # 连接到SMTP服务器并发送邮件
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login(smtp_user, smtp_password)
        server.sendmail(smtp_user, to_address, msg.as_string())
        server.quit()
        print('邮件发送成功')
    except Exception as e:
        print(f'邮件发送失败: {e}')

# 使用schedule库安排任务
schedule.every().day.at("08:00").do(send_email)  # 每天早上8点发送邮件

# 运行调度器
while True:
    schedule.run_pending()
    time.sleep(1)

步骤 3: 设置和运行脚本

  1. 编辑脚本: 用你的SMTP服务器地址、端口、邮箱地址和密码替换脚本中的占位符。注意,使用真实的电子邮件和密码时要注意安全,可以使用环境变量或者配置文件来存储敏感信息。

  2. 保存脚本: 将脚本保存为 daily_email_report.py

  3. 运行脚本: 在命令行中导航到脚本所在的目录,然后运行:

    python daily_email_report.py
    

注意事项

  • 安全性: 不要在脚本中直接包含明文密码,推荐使用环境变量或者加密的方式来存储和读取密码。
  • 调试: 初次运行脚本时,可能需要先手动运行 send_email() 函数来确保邮件发送功能正常。
  • 计划任务: 确保你的机器或服务器在预定时间处于开启状态,否则可以考虑使用服务器上的cron任务来运行脚本。

通过上述步骤,你就可以每天自动发送电子邮件报告了。如果需要进一步定制电子邮件内容或处理其他逻辑,可以根据需求扩展 send_email() 函数中的内容。