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 发送邮件的权限。