编写一个自动发送每日电子邮件报告的脚本涉及几个步骤。我们需要使用 Python 编写脚本,并使用一些库来发送电子邮件。下面是一个示例脚本和设置步骤。
第一步:安装必要的库
我们需要安装 smtplib
和 email
库。可以通过以下命令安装:
pip install smtplib email
第二步:编写发送电子邮件的 Python 脚本
以下是一个示例脚本,用于发送每日电子邮件报告:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os
# 电子邮件配置信息
EMAIL_ADDRESS = "your_email@example.com" # 发送方邮箱地址
EMAIL_PASSWORD = "your_password" # 发送方邮箱密码
SMTP_SERVER = "smtp.example.com" # SMTP服务器地址
SMTP_PORT = 587 # SMTP服务器端口
def send_email(subject, body, to_email, attachment_path=None):
# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['From'] = EMAIL_ADDRESS
msg['To'] = to_email
msg['Subject'] = subject
# 添加邮件正文
msg.attach(MIMEText(body, 'plain'))
# 添加附件(如果有)
if attachment_path:
attachment = open(attachment_path, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f"attachment; filename= {os.path.basename(attachment_path)}")
msg.attach(part)
attachment.close()
# 连接到SMTP服务器并发送邮件
try:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
server.sendmail(EMAIL_ADDRESS, to_email, msg.as_string())
server.quit()
print("邮件发送成功!")
except Exception as e:
print(f"邮件发送失败:{e}")
if __name__ == "__main__":
subject = "每日报告"
body = "这是您的每日报告。"
to_email = "recipient@example.com"
attachment_path = "path_to_your_report_file" # 可选
send_email(subject, body, to_email, attachment_path)
第三步:设置定时任务
在Linux或macOS上,可以使用cron
来设置每日定时任务。在Windows上,可以使用任务计划程序。
在Linux/macOS上使用cron:
-
打开终端并输入以下命令以编辑cron任务:
crontab -e
-
添加以下行以每天定时运行脚本(假设脚本路径为
/path/to/your_script.py
):0 9 * * * /usr/bin/python3 /path/to/your_script.py
以上配置表示每天上午9点运行一次脚本。
在Windows上使用任务计划程序:
- 打开任务计划程序并创建一个基本任务。
- 选择触发器(例如,每天)。
- 选择操作(启动程序)。
- 浏览并选择Python可执行文件(例如,
python.exe
),然后在“添加参数”中输入脚本路径。
注意事项
- 确保电子邮件提供商允许SMTP访问。如果使用的是Gmail,请确保启用了“允许不太安全的应用程序”访问,或使用应用专用密码。
- 使用真实的电子邮件地址和密码,并注意保护敏感信息。
这样设置后,脚本将每天定时发送电子邮件报告。根据需要,您可以修改脚本以包含更多功能或添加更多的附件。