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

1. 安装必要的库

首先,您需要安装用于发送电子邮件的 smtplib 库以及处理邮件内容的 email 库。这些库都是 Python 标准库的一部分,因此不需要额外安装。如果需要处理 HTML 报告或附件,可能还需要 MIME 库,这也是标准库的一部分。

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_report():
    # SMTP服务器配置
    smtp_server = 'smtp.example.com'
    smtp_port = 587
    smtp_user = 'your_email@example.com'
    smtp_password = 'your_password'

    # 发件人和收件人
    sender = 'your_email@example.com'
    recipient = 'recipient@example.com'

    # 创建MIMEMultipart对象
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = recipient
    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(sender, recipient, msg.as_string())
        server.quit()
        print("邮件发送成功")
    except Exception as e:
        print(f"邮件发送失败: {e}")

# 定义每日发送邮件的任务
schedule.every().day.at("08:00").do(send_email_report)

# 保持脚本运行
while True:
    schedule.run_pending()
    time.sleep(1)

3. 设置 SMTP 服务器

根据您的电子邮件提供商配置 SMTP 服务器信息。以下是一些常见电子邮件提供商的 SMTP 配置信息:

  • Gmail

    • 服务器: smtp.gmail.com
    • 端口: 587
    • 注意: 需要在 Google 帐号中启用 "低安全性应用访问" 或使用 OAuth2 认证。
  • Outlook/Hotmail

    • 服务器: smtp.office365.com
    • 端口: 587
  • Yahoo Mail

    • 服务器: smtp.mail.yahoo.com
    • 端口: 587

4. 定时任务

该脚本使用 schedule 库每天在指定时间(例如上午8点)运行 send_email_report 函数。您可以根据需要调整时间。

5. 运行脚本

将脚本保存为 .py 文件(例如 daily_email_report.py),然后使用 Python 解释器运行:

python daily_email_report.py

6. 测试和调试

在正式运行前,最好先手动运行一次 send_email_report() 函数,确保所有配置和代码都正常工作。

send_email_report()

如果邮件发送失败,请检查以下几点:

  • SMTP 服务器配置是否正确。
  • 邮件帐户的用户名和密码是否正确。
  • 发件人和收件人的电子邮件地址是否正确。
  • 您的电子邮件服务提供商是否限制了通过 SMTP 发送邮件的权限。
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值