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

使用Python编写一个定时发送电子邮件的脚本

发布时间:2023-12-24 04:20:50

Python提供了smtplib库,可以用来发送电子邮件。同时,还可以使用time库来实现定时发送邮件。

以下是一个示例脚本,可以实现定时发送电子邮件。

import smtplib
import time

def send_email(sender, receiver, subject, message):
    try:
        # 设置SMTP服务器地址和端口
        smtp_server = 'smtp.gmail.com'
        smtp_port = 587

        # 邮件发送者和登录信息
        username = 'your_username'
        password = 'your_password'

        # 创建SMTP连接
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login(username, password)

        # 创建邮件
        email = f'From: {sender}
To: {receiver}
Subject: {subject}

{message}'

        # 发送邮件
        server.sendmail(sender, receiver, email)
        print("邮件发送成功!")

        # 关闭SMTP连接
        server.quit()

    except Exception as e:
        print("邮件发送失败:", str(e))

def schedule_email(sender, receiver, subject, message, schedule_time):
    current_time = time.time()
    schedule_time = schedule_time.timestamp()
    time_diff = schedule_time - current_time

    if time_diff <= 0:
        print("请输入将来的时间来定时发送邮件!")
        return

    time.sleep(time_diff)
    send_email(sender, receiver, subject, message)

if __name__ == '__main__':
    sender = 'your_email@gmail.com'
    receiver = 'recipient_email@gmail.com'
    subject = '测试邮件'
    message = '这是一封定时发送的测试邮件!'
    
    # 设定定时发送时间
    schedule_time = time.localtime(time.time() + 600)  # 10分钟后发送邮件

    schedule_email(sender, receiver, subject, message, schedule_time)

在上面的脚本中,send_email函数用于发送邮件,接收发送者、接收者、主题和消息作为参数。在函数中,首先设置SMTP服务器的地址和端口,然后使用提供的登录信息建立SMTP连接。然后,创建邮件对象并发送邮件。最后,关闭SMTP连接。

schedule_email函数用于定时发送邮件。它接收与send_email函数相同的参数,以及一个时间对象,表示邮件应在何时发送。函数首先计算当前时间和指定的时间之间的时间差,并使用time.sleep函数在时间差之后发送邮件。

在示例代码的末尾,我们定义了发送人、接收人、主题和消息,并使用time.localtime函数计算了发送时间。10分钟后,脚本将发送邮件。

请确保按照注释中的提示,将SMTP服务器的地址和端口、发送者和登录信息替换为您自己的信息。

希望这个例子能帮助您理解如何使用Python编写定时发送电子邮件的脚本。