python定时发送邮件(自动添加附件)针不戳

1. 前言

邮件是我们平时工作中经常使用的一种交流方式,而定时发送邮件也是很有实用价值的一个功能。本文将介绍如何使用Python实现定时发送邮件,并且自动添加附件。

2. 实现思路

实现定时发送邮件的过程可以分为以下几步:

2.1 设置定时任务

使用Python的schedule库来设置定时任务,并且在定时任务中执行发送邮件的操作。

2.2 编写发送邮件函数

采用Python的自带库smtplib和email,前者用于连接邮箱服务器,后者用于构建邮件内容。发送邮件需要SMTP协议支持,由于每个邮箱提供商的SMTP服务器地址和端口号都不同,所以在编写发送函数时需注意设置正确的地址和端口号。

2.3 设置附件

使用Python的自带库email.mime来实现附件添加。在添加附件时,需要指定附件的类型、文件名和文件路径。

3. 代码实现

首先,安装Python的schedule库,在命令行中输入如下命令即可:

!pip install schedule

3.1 编写发送邮件函数

编写的发送邮件函数除了需要设置SMTP服务器的地址和端口号以外,还需要输入邮件的发送者、接收者、主题、正文内容和附件路径等必要信息。

import os

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.header import Header

from email.mime.application import MIMEApplication

def send_email(from_addr, password, to_addr, subject, content, file_path=None):

# 设置邮件正文

msg = MIMEMultipart()

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

# 构造附件

if file_path:

file_name = os.path.basename(file_path)

attachment = MIMEApplication(open(file_path, 'rb').read())

attachment.add_header('Content-Disposition', 'attachment', filename=file_name)

msg.attach(attachment)

# 设置邮件头部信息

msg['From'] = from_addr

msg['To'] = to_addr

msg['Subject'] = Header(subject, 'utf-8').encode()

# 连接SMTP服务器并发送邮件

smtp_server = smtplib.SMTP_SSL('smtp.qq.com', 465)

smtp_server.login(from_addr, password)

smtp_server.sendmail(from_addr, to_addr, msg.as_string())

smtp_server.quit()

3.2 添加定时任务

使用Python的schedule库设置定时任务,并且在任务中调用发送邮件函数发送邮件。

import schedule

import time

def job():

# 调用发送邮件函数,设置邮件正文和附件路径

send_email('sender@qq.com', 'password', 'receiver@qq.com', '测试邮件', '这是一封测试邮件。', 'test.txt')

# 每隔10秒钟执行一次job函数

schedule.every(10).seconds.do(job)

while True:

schedule.run_pending()

time.sleep(1)

4. 总结

本文介绍了如何使用Python实现定时发送邮件,并且自动添加附件。实现过程中,我们采用了Python的schedule库来设置定时任务,并且在任务中调用发送邮件函数发送邮件,同时使用Python的email和mime库来实现邮件的内容构建和附件添加。在实际使用过程中,我们需要根据具体的需求,调整邮件的内容和附件的路径,即可实现自动发送邮件的功能。

后端开发标签