python实现定时批量发送邮件

近期有定时发送邮件的需要,刚好学了python的办公自动化,可以用python来帮我完成

先上效果图
在这里插入图片描述

准备工作:
配置环境,安装相关第三方库,这里主要指schedule库,可以实现定时执行某个函数

pip install schedule

然后,需要去开通邮箱的smtp服务,授权邮件收发功能,以qq邮箱为例,大概是这样的,不会没关系,csdn里有很多相关教程,这里不赘述
在这里插入图片描述
然后,准备工作就差不多了,思路是这样的,编写一个发送邮件的函数,用schedule库定期执行函数就能达到效果,复杂一点的可能需要几个函数,同时也能实现批量发送,收件人那里给个列表就能实现。

上代码了,改改账号、授权码、收件人、标题、内容就能用


'''
准备工作:首先你需要去邮箱开通smtp的服务,得到登录授权码,我这里以qq邮箱为例,csdn里相关的教程很多,我就不做介绍了
然后,安装相关的库,这里是schedule库,用pip install schedule 就可完成,
发送邮件的库用的是python自带的,不需要再安装,缺点是代码量比较大,但是套路固定
之后就是复制代码,修改账号、授权码、正文内容、标题为自己的
'''

# 定义一个函数用于发送邮件
def job():
    import time
    from smtplib import SMTP_SSL
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header

    # smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
    # email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

    try:
        host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
        sender_qq = '***@qq.com' #发件人邮箱
        pwd = '你的授权码'
        receiver = ['***@qq.com','***@qq.com' ]#收件人邮箱
        #receiver = '910456393@qq.com'
        mail_title = 'Python自动发送的邮件' #邮件标题
        mail_content = "您好,这是使用python登录QQ邮箱发送邮件的测试——hello" + str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) #邮件正文内容
        # 初始化一个邮件主体
        msg = MIMEMultipart()
        msg["Subject"] = Header(mail_title,'utf-8')
        msg["From"] = sender_qq
        # msg["To"] = Header("测试邮箱",'utf-8')
        msg['To'] = ";".join(receiver)
        # 邮件正文内容
        msg.attach(MIMEText(mail_content,'plain','utf-8'))



        smtp = SMTP_SSL(host_server) # ssl登录

        # login(user,password):
        # user:登录邮箱的用户名。
        # password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。
        smtp.login(sender_qq,pwd)

        # sendmail(from_addr,to_addrs,msg,...):
        # from_addr:邮件发送者地址
        # to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
        # msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
        smtp.sendmail(sender_qq,receiver,msg.as_string())
        print('邮件发送成功')
    except Exception as e:
        print(e)
        print('邮件发送失败')

    # quit():用于结束SMTP会话。
    smtp.quit()



def run():
    import schedule
    import time
    # 每分钟执行一次job函数
    schedule.every(1).minute.do(job)
    # schedule.every().day.at('09:04').do(job)
    # schedule.every(2).minutes.do(job)
    i = 0
    while True:
        i = i + 1
        schedule.run_pending()
        time.sleep(1)

if __name__ == '__main__':
    run()

感谢阅读,下次再见

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值