Python中使用send_mail()函数自动发送定时邮件的方法
发布时间:2024-01-10 10:24:00
在Python中,可以使用smtplib模块来发送邮件,结合scheudler模块来实现定时发送邮件的功能。下面是使用send_mail()函数自动发送定时邮件的方法的示例代码:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from apscheduler.schedulers.blocking import BlockingScheduler
def send_mail():
# 邮件内容及设置
sender = 'sender@example.com' # 发件人邮箱
receiver = 'receiver@example.com' # 收件人邮箱
subject = '定时邮件' # 邮件主题
smtpserver = 'smtp.example.com' # 邮件服务器
username = 'username@example.com' # 发件人邮箱账号
password = 'password' # 发件人邮箱密码
# 构造邮件内容
message = MIMEText('这是一封定时发送的邮件', 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# 发送邮件
try:
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.sendmail(sender, receiver, message.as_string())
smtp.quit()
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败:', e)
if __name__ == '__main__':
# 创建调度器
scheduler = BlockingScheduler()
# 添加定时任务,每天9:00发送邮件
scheduler.add_job(send_mail, 'cron', hour=9, minute=0, second=0)
# 启动调度器
scheduler.start()
在这个示例代码中,我们首先导入了需要使用的模块,包括smtplib、email.mime.text、email.header和apscheduler.schedulers.blocking等模块。然后定义了一个send_mail()函数,用来发送邮件。在函数中,我们需要设置发件人邮箱、收件人邮箱、邮件主题、邮件服务器、发件人邮箱账号和密码等信息。
在发送邮件之前,我们需要先构造邮件内容。在这个示例中,我们使用MIMEText类来构造一个简单的纯文本邮件。然后设置发件人、收件人和主题等信息。
在发送邮件的部分,我们使用SMTP()类来连接邮件服务器,并调用login()方法进行登录。然后调用sendmail()方法发送邮件,并最后调用quit()方法退出连接。如果发送邮件失败,会抛出SMTPException异常。
最后,在if __name__ == '__main__':部分,我们创建了一个BlockingScheduler调度器,并使用add_job()方法添加了一个定时任务。这个定时任务会在每天的9:00发送邮件。最后,调用start()方法来启动调度器,程序会一直运行,直到按下Ctrl+C结束。
通过这个示例代码,我们可以实现定时发送邮件的功能。你可以根据需要修改定时任务的设定,比如改变发送时间或发送周期。注意,为了能够正确发送邮件,你需要将示例代码中的电子邮件地址、邮箱账号和密码替换为你自己的信息。
