使用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编写定时发送电子邮件的脚本。
