欢迎访问宙启技术站
智能推送

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()

在这个示例代码中,我们首先导入了需要使用的模块,包括smtplibemail.mime.textemail.headerapscheduler.schedulers.blocking等模块。然后定义了一个send_mail()函数,用来发送邮件。在函数中,我们需要设置发件人邮箱、收件人邮箱、邮件主题、邮件服务器、发件人邮箱账号和密码等信息。

在发送邮件之前,我们需要先构造邮件内容。在这个示例中,我们使用MIMEText类来构造一个简单的纯文本邮件。然后设置发件人、收件人和主题等信息。

在发送邮件的部分,我们使用SMTP()类来连接邮件服务器,并调用login()方法进行登录。然后调用sendmail()方法发送邮件,并最后调用quit()方法退出连接。如果发送邮件失败,会抛出SMTPException异常。

最后,在if __name__ == '__main__':部分,我们创建了一个BlockingScheduler调度器,并使用add_job()方法添加了一个定时任务。这个定时任务会在每天的9:00发送邮件。最后,调用start()方法来启动调度器,程序会一直运行,直到按下Ctrl+C结束。

通过这个示例代码,我们可以实现定时发送邮件的功能。你可以根据需要修改定时任务的设定,比如改变发送时间或发送周期。注意,为了能够正确发送邮件,你需要将示例代码中的电子邮件地址、邮箱账号和密码替换为你自己的信息。