Python实现定时发送邮件代码

本文介绍了一个使用Python通过SMTP服务器发送邮件的示例程序。该程序包括配置邮箱服务器、登录凭证及发送邮件的具体实现,并提供了一个定时发送邮件的功能。

mailtools.py代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python 
# @Time    : 2017/12/22 17:50
# @Desc    :
# @File    : mailtools.py
# @Software: PyCharm
import smtplib,time
from email.mime.text import MIMEText
#使用的邮箱的smtp服务器地址,这里是163的smtp地址
mail_host="smtp.163.com"
# 用户名
mail_user="***"
#密码
mail_pass="***"
#邮箱的后缀,网易就是163.com
mail_postfix="163.com"


def send_mail(to_list,sub,content):
    me="<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, _subtype='plain', _charset='utf-8')
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = ";".join(to_list)                #将收件人列表以‘;’分隔
    try:
        server = smtplib.SMTP()
        # 连接服务器
        server.connect(mail_host)
        # 登录操作
        server.login(mail_user,mail_pass)
        server.sendmail(me, to_list, msg.as_string())
        server.close()
        return True
    except Exception, e:
        return False


'''
定时函数默认60秒
'''
def re_exe(inc = 60):
    while True:
        # 邮件主题和邮件内容
        # 这是最好写点中文,如果随便写,可能会被网易当做垃圾邮件退信
        if  send_mail(['******@qq.com'],"删除","请按删除键"):
            print "done!"
        else:
            print "failed!"
        time.sleep(inc)

if __name__ == '__main__':
    # 发送1封,上面的列表是几个人,这个就填几
    for i in range(100):
        #输入定时时间
        re_exe("echo %time%", 60)

 

以下是Python代码,可以用于定时发送邮件: ``` python import smtplib import time from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication # 发送邮件函数 def send_email(subject, body, to_email, attachments=None): # 邮件发送者 from_email = '发件人邮箱地址' # 邮件对象 msg = MIMEMultipart() # 邮件正文 body = MIMEText(body, _subtype='html', _charset='utf-8') msg.attach(body) # 邮件附件 if attachments: for file in attachments: attachment = MIMEApplication(open(file, 'rb').read()) attachment.add_header('Content-Disposition', 'attachment', filename=file) msg.attach(attachment) # 邮件主题、发件人、收件人 msg['Subject'] = subject msg['From'] = from_email msg['To'] = to_email # SMTP服务器设置 smtp_server = 'smtp服务器地址' smtp_port = 25 smtp_username = 'smtp服务器用户名' smtp_password = 'smtp服务器密码' # 发送邮件 try: with smtplib.SMTP(smtp_server, smtp_port) as server: server.login(smtp_username, smtp_password) server.sendmail(from_email, to_email, msg.as_string()) print(f'{time.strftime("%Y-%m-%d %H:%M:%S")} 邮件发送成功') except Exception as e: print(f'{time.strftime("%Y-%m-%d %H:%M:%S")} 邮件发送失败:{e}') # 设置邮件主题、收件人、邮件内容和附件 subject = '邮件主题' to_email = '收件人邮箱地址' body = '邮件内容' attachments = ['附件1路径', '附件2路径'] # 设置发送时间 send_time = '2022-01-01 00:00:00' # 定时发送邮件 while True: now_time = time.strftime('%Y-%m-%d %H:%M:%S') if now_time == send_time: send_email(subject, body, to_email, attachments) break else: print(f'{now_time} 邮件发送!') time.sleep(1) ``` 首先,我们定义了一个`send_email`函数,用于发送邮件。该函数需要传入邮件主题、邮件内容、收件人邮箱以及可选的附件。邮件发送使用的是SMTP协议,需要设置SMTP服务器地址、SMTP端口、SMTP用户名和SMTP密码。 接着,我们设置了邮件主题、收件人邮箱邮件内容和附件信息。注意,如果没有附件,需要将`attachments`参数设置为`None`。 然后,我们设置了定时发送的时间。在`while`循环中,每秒钟检查当前时间是否等于要发送的时间,如果相等,则调用`send_email`函数发送邮件,并退出循环。如果不相等,则打印当前时间,并等待1秒钟后再次检查。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值