以下是使用Python发送日常电子邮件报告的自动化脚本设置步骤:
第1步:编写Python脚本
这是一个基本的Python脚本,用于发送电子邮件。此脚本将被安排每天运行。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_daily_email():
sender_address = 'your_email@example.com'
sender_pass = 'your_password'
receiver_address = 'receiver_email@example.com'
# 设置MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'Daily Report' # 邮件主题
# 邮件的正文和附件
message.attach(MIMEText('这是日常报告邮件。', 'plain'))
# 创建SMTP会话,用于发送邮件
session = smtplib.SMTP('smtp.example.com', 587) # 使用gmail及其端口
session.starttls() # 启用安全
session.login(sender_address, sender_pass) # 登录邮箱和密码
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('邮件已发送')
# 调用函数
send_daily_email()
将 'your_email@example.com'
, 'your_password'
, 'receiver_email@example.com'
, 和 'smtp.example.com'
替换成您的电子邮件、密码、收件人的电子邮件和您的电子邮件提供商的SMTP服务器。
第2步:安装所需的包
如果这些包在您的Python环境中尚未可用,您可能需要安装一些包:
pip install schedule
第3步:安排脚本
您有两个选项来安排您的脚本:
选项1:使用Python的schedule
库
您可以使用Python的schedule
库在每天的固定时间运行脚本。以下是您需要添加到Python脚本中的示例:
import schedule
import time
# 定义工作
def job():
send_daily_email()
# 每天在9:00安排工作(24小时制)
schedule.every().day.at("09:00").do(job)
# 让脚本处于待命状态
while True:
schedule.run_pending()
time.sleep(60) # 等待一分钟
选项2:使用系统的Cron计划程序(类Unix系统)
如果您使用的是类Unix系统,可以使用crontab
来安排Python脚本。首先,确保您的脚本是可执行的:
chmod +x path_to_your_script.py
然后,通过运行以下命令编辑您的crontab文件:
crontab -e
添加以下行以在每天上午9点运行脚本:
0 9 * * * /usr/bin/python3 /path_to_your_script.py
将/usr/bin/python3
替换成Python可执行文件的路径,将/path_to_your_script.py
替换成Python脚本的完整路径。
第4步:安全问题
以明文存储密码是不安全的。考虑使用环境变量或加密存储敏感信息。
第5步:测试
在安排脚本之前,确保手动测试您的脚本以确认它能正确发送电子邮件。
第6步:部署
最后,在一个全天候运行的服务器或计算机上部署您的脚本,以确保电子邮件每天都能不间断地发送。
按照这些步骤,您应该能够设置并自动化使用Python发送日常电子邮件报告。
PS:
使用qq邮箱示例
要使用QQ邮箱发送电子邮件,您需要按照以下步骤操作:
SMTP服务器地址:对于QQ邮箱,SMTP服务器地址是
smtp.qq.com
。端口号:QQ邮箱的SMTP服务通常使用465或587端口,如果您打算使用SSL,则使用465端口。
邮箱和密码:您的邮箱地址是您的QQ邮箱全名,例如
your_email@qq.com
。密码需要使用您的QQ邮箱生成的授权码,而不是您的QQ密码。您可以在QQ邮箱的账户设置中生成授权码。根据这些信息,您的Python脚本中的相关部分应该修改如下:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText def send_daily_email(): sender_address = 'your_email@qq.com' # 您的QQ邮箱地址 sender_pass = 'your_authorization_code' # 您的QQ邮箱授权码 receiver_address = 'receiver_email@example.com' # 接收者的邮箱地址 # 设置MIME message = MIMEMultipart() message['From'] = sender_address message['To'] = receiver_address message['Subject'] = 'Daily Report' # 邮件主题 # 邮件的正文和附件 message.attach(MIMEText('这是日常报告邮件。', 'plain')) # 创建SMTP会话,用于发送邮件 session = smtplib.SMTP_SSL('smtp.qq.com', 465) # 使用QQ邮箱的SMTP服务器和SSL端口 session.login(sender_address, sender_pass) # 登录邮箱和授权码 text = message.as_string() session.sendmail(sender_address, receiver_address, text) session.quit() print('邮件已发送') # 调用函数 send_daily_email()
确保替换
your_email@qq.com
和your_authorization_code
为您的QQ邮箱地址和授权码。如果您没有授权码,需要登录到QQ邮箱,在设置中找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”页面,按照指示开启SMTP服务,并生成授权码。
效果