python自动定时发送邮件

106 阅读1分钟

pip install schedule

import schedule import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header import datetime

配置邮件信息

smtp_server = 'smtp.example.com' port = 587 # 或465(SSL) username = 'your_username' password = 'your_password' sender = 'your_email@example.com' receiver = 'recipient_email@example.com'

定义发送邮件的函数

def send_email(subject, content): message = MIMEMultipart() message['From'] = Header(sender, 'utf-8') message['To'] = Header(receiver, 'utf-8') message['Subject'] = Header(subject, 'utf-8')

message.attach(MIMEText(content, 'plain', 'utf-8'))

server = smtplib.SMTP(smtp_server, port)
server.starttls()  # 启用TLS
server.login(username, password)
server.sendmail(sender, receiver, message.as_string())
server.quit()

定义定时任务

def job(): current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') send_email(f'Timed Email at {current_time}', 'This is a timed email sent by Python.')

每5分钟执行一次任务

schedule.every(5).minutes.do(job)

运行定时任务

while True: schedule.run_pending() time.sleep(1)

确保替换smtp_serverportusernamepasswordsender, 和receiver为你的邮件服务器和账户信息。

这段代码使用了schedule库的every(n).minutes.do(job)方法来安排任务,其中n是间隔的分钟数。job函数会被定期调用,并发送一封邮件。你可以根据需要调整时间间隔(例如,使用every().hour.do(job)每小时执行一次)。