精华内容
下载资源
问答
  • Python_定时自动发送邮件

    千次阅读 2019-06-17 03:01:39
    虽然主流邮箱都可以定时发送邮件,但还是尝试用python写了一个定时发送邮件的脚本,设定好一个发送时间后,可以按下面步骤将文件通过QQ邮箱发送出去。 文件的最后修改及最后访问时间随机调整为发邮件前20~25分钟; ...

    虽然主流邮箱都可以定时发送邮件,但还是尝试用python写了一个定时发送邮件的脚本,设定好一个发送时间后,可以按下面步骤将文件通过QQ邮箱发送出去。

    1. 文件的最后修改及最后访问时间随机调整为发邮件前20~25分钟;
    2. 文件超过10M或是一个文件夹时,则自动生成zip压缩包;
    3. 通过邮箱自动发送。

    有几个点需要特别注意一下:

    • 修改文件的时间属性需要用到win32API的SetFileTime,所以需要先安装pywin32模块;
    • 因为是通过SMTP服务发送的邮件,需要先在电子邮箱中打开SMTP服务
    • 使用SMTP发送邮件需要邮箱地址和授权码,授权码需要在邮箱设置中获取

    以下代码:

    from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
    from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
    from pywintypes import Time
    from threading import Timer
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    import time, os, random, zipfile, smtplib
     
    def ModifyFileTime(filePath, lastTime):
        #构造时间
        fh = CreateFile(filePath, GENERIC_READ|GENERIC_WRITE, 0, None, OPEN_EXISTING, 0, 0)
        offsetSec=random.randint(1200, 1500)
        cTime, aTime, wTime = GetFileTime(fh)
        aTime = Time(time.mktime(lastTime) - offsetSec)
        wTime = Time(time.mktime(lastTime) - offsetSec)
        #修改时间属性
        SetFileTime(fh, cTime, aTime, wTime)
        CloseHandle(fh)
     
    def GetFilePathList(filePath, result):
        if os.path.isdir(filePath):
            files = os.listdir(filePath)
            for file in files:
                if os.path.isdir(filePath + '/' +file):
                    GetFilePathList(filePath + '/' + file, result)
                else:
                    result.append(filePath + '/' + file)
        else:
            result.append(filePath)
         
    def RunZipFile(filePath):
        #构造压缩包路径
        zipFilePath = os.path.basename(filePath)
        if os.path.isdir(filePath):
            zipFilePath = zipFilePath + '.zip'
        else:
            zipFilePath = os.path.splitext(zipFilePath)[0] + '.zip'
        #文件已存在则删除原有文件
        if os.path.exists(zipFilePath):
            os.remove(zipFilePath)
        #创建压缩包
        zipFileList = []
        GetFilePathList(filePath, zipFileList)
        f = zipfile.ZipFile(zipFilePath, 'w', zipfile.ZIP_DEFLATED)
        for fileP in zipFileList:
            arcName = os.path.basename(fileP)
            if os.path.isdir(filePath):
                dirName = os.path.dirname(fileP)
                arcName = dirName.replace(os.path.dirname(dirName),'') + '/' + arcName
            f.write(fileP, arcName)
        f.close()
        return zipFilePath
     
    def SendEmail(filePath):
        #邮件设置
        fromAddr = 'XXXXXXXXX@qq.com'#发件地址
        autho = 'XXXXXXXXXXXXXXXX'#授权码
        smtpServer = 'smtp.qq.com'#smtp服务器
     
        #邮件信息
        toAddr = 'XXXXXXXX@163.com'#收件地址
        title = 'YourTitle'#主题
        text = 'YourText'#正文
        annexPath = filePath#附件路径
     
        #构造邮件
        message = MIMEMultipart()
        message['From'] = fromAddr
        message['To'] = toAddr
        message['Subject'] = Header(title, 'utf-8')
        message.attach(MIMEText(text, 'plain', 'utf-8'))
     
        #构造附件
        annex = MIMEApplication(open(annexPath,'rb').read())
        annex.add_header('Content-Disposition', 'attachment', filename = os.path.basename(annexPath))
        message.attach(annex)
     
        #发送邮件
        server = smtplib.SMTP_SSL(smtpServer, 465)
        server.login(fromAddr, autho)
        server.sendmail(fromAddr, [toAddr], message.as_string())
        server.quit()
     
    def PreparingFilesAndSend(filePath, runTime):
        annexPath = filePath
        if os.path.isdir(filePath):
            #遍历文件,修改时间属性
            modFileList = []
            GetFilePathList(filePath, modFileList)
            for fileP in modFileList:
                ModifyFileTime(fileP, runTime)
            #打包
            annexPath = RunZipFile(filePath)
        else:
            #修改时间属性
            ModifyFileTime(filePath, runTime)
            #判断是否需要压缩
            if os.path.getsize(filePath)/float(1024*1024) > 10:
                annexPath = RunZipFile(filePath)
        #发送邮件
        SendEmail(annexPath)
     
    def TimedTask(filePath, runTime):
        interval = time.mktime(runTime) - time.mktime(time.localtime())
        Timer(interval, PreparingFilesAndSend, args=(filePath, runTime)).start()
     
    fp = r"C:/Users/imfour/Documents/pythonTest/testtxt.txt"
    rt = "2019-6-17 02:08:00"
    #转化为结构化时间
    timeFormat = "%Y-%m-%d %H:%M:%S"
    s_time=time.strptime(rt, timeFormat)
     
    if __name__ == "__main__":
        TimedTask(fp, s_time)
    展开全文
  • Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。 SMTP通讯的基本流程可以概括为以下几点: 1.连接SMTP服务器 2.登陆用户名和密码 3....
  • Python每天定时发送邮件

    千次阅读 2019-11-14 09:19:50
    1.今天要写的是用Python每天定时发送邮件邮件内容包括天气信息和金山词霸的每日一句 2.首先编写代码: import smtplib,requests,json from email.mime.text import MIMEText import time def getWeather(city,...

    1.今天要写的是用Python每天定时发送邮件,邮件内容包括天气信息和金山词霸的每日一句

    2.首先编写代码:

    import smtplib,requests,json
    from email.mime.text import MIMEText
    import time
    def getWeather(city,link):
        url = link+city
        r = requests.get(url).json()
        msg = '\r\n亲爱的,今天的天气是'+r['data']['forecast'][0]['type']+'\n\t温度:'+r['data']['forecast'][0]['high']+'--'+r['data']['forecast'][0]['low']+'\n\t风:'+r['data']['forecast'][0]['fengli'][9:-3]+'--'+r['data']['forecast'][0]['fengxiang']+'\n\t'+r['data']['ganmao']
        return str(msg)
    def getWord(link):
        r = requests.get(link).json()
        msg = '\n\r\n'+r['content']+'\r\n'+r['note']
        return str(msg)
    data = {
        'link1':'http://open.iciba.com/dsapi/',
        'link2':'http://wthrcdn.etouch.cn/weather_mini?city=',
        'city':'南昌',
        'first':'嘤嘤嘤!\r\n',
        'mid':'该邮件每隔三十分钟发送一次,退订请回复TD\r\n',
        'last':'\r\n\r\n                                  ----我爱学习(个屁)'
    }
    
    msg_from = '2530429686@qq.com'  # 发送方邮箱
    passwd = 'qiunqkuyyxgcdiad'  # 填入发送方邮箱的授权码
    msg_to = '2530429686@qq.com'  # 收件人邮箱
    
    subject = "python邮件测试"  # 主题
    content = data['first']+'\n现在是'+time.strftime("%Y-%m-%d")+" "+time.strftime("%H:%M:%S")+getWeather(data['city'],data['link2'])+'\n'+getWord(data['link1'])+'\n\n'+data['mid']+data['last']
    msg1 = MIMEText(content)
    msg1['Subject'] = subject
    msg1['From'] = msg_from
    msg1['To'] = msg_to
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com",465)#邮件服务器及端口号
        s.login(msg_from, passwd)  #登录SMTP服务器
        s.sendmail(msg_from, msg_to, msg1.as_string())#发邮件 as_string()把MIMEText对象变成str
        print ("发送成功")
    except s.SMTPException:
        print ("发送失败")
    finally:
        s.quit()

    点击运行就会发送邮件了

    3.接着设置Windows定时任务,让该程序每天定时执行

    步骤如下:

    1,首先进入计算机管理->任务计划程序->任务计划程序库  ,右边创建任务

    2.创建任务后,在常规选项中,名字和描述随便写

    3,在触发器选项中定时

    4,在操作选项中按图操作

    运行截图如下:

     

    展开全文
  • 正在准备2021的考研,所以想用Python写一个能每天定时发送倒计时天数到邮箱的程序 要点 Python邮件 datetime 库指定日期与加减 schedule 库 服务器运行Python程序 邮箱设置 需要开启邮箱 pop3 / smtp 服务,...

    介绍

    正在准备2021的考研,所以想用Python写一个能每天定时发送倒计时天数到邮箱的程序

    要点

    Python邮件

    datetime 库指定日期与加减

    schedule 库

    服务器运行Python程序

    邮箱设置

    需要开启邮箱 pop3 / smtp 服务,以QQ邮箱为例,设置 -> 账户

    开启后可获得授权码

    邮件编写发送

    在Python中,使用email模块编写邮件,使用smtplib发送邮件 (详见代码)

    关于日期,使用datetime.datetime(指定日期)

    关于schedule可百度查看

    代码

    from email.mime.text import MIMEText
    import smtplib
    import datetime
    import schedule
    import time
    
    def send():
    	that_day = datetime.datetime(2020, 12, 19)
    	days = (that_day - datetime.datetime.now()).days
    
    	# 文本
    	msg = MIMEText('考研倒计时%d天' % days)
    	# 主题
    	msg['Subject'] = '考研倒计时%d天' % days
    
    	sender = '1030635594@qq.com'
    	# 授权码
    	password = "授权码"
    	host = "smtp.qq.com"
    	receiver = "1030635594@qq.com"
    
    	try:
    		# QQ邮箱端口号为465
    		server = smtplib.SMTP_SSL(host, 465)
    		# 登录 发送 退出
    		server.login(sender, password)
    		server.sendmail(sender, [receiver], msg.as_string())
    		server.quit()
    		print("success")
    	except:
    		print("failed")
    
    schedule.every().day.at("09:23").do(send)
    
    while True:
    	schedule.run_pending()
    	time.sleep(10)

    这里自己发给自己

    倒计时,即是用未来时间减去当前时间,并提取出days元素

    服务器运行

    nohup python python_email.py > out.log 2>&1 &
    

    考研加油!冲冲冲! 

    展开全文
  • python实现定时发送邮件的功能

    千次阅读 2020-02-17 16:04:13
    python这种库丰富又不需要接触到底层的语言,用来做定时邮件的功能再适合不过。 代码如下,目的是为了每天上班下班(9点Check in, 19点Check out)发送一封邮件,且邮件标题带日期。 邮件目前是整点发送,且没有...

    像python这种库丰富又不需要接触到底层的语言,用来做定时邮件的功能再适合不过。

    代码如下,目的是为了每天上班下班(9点Check in, 19点Check out)发送一封邮件,且邮件标题带日期。

    邮件目前是整点发送,且没有排除周末,若想改得更随机一点,可以增加sleep的间隔,或者用分钟来判断。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    import time, os
    import pytz
    import datetime
    import logging
    
    my_sender='xxxxxxxx'    # 发件人邮箱账号
    mail_sender='xxxxxxxx@xxxxxxxxx.com'
    my_pass = 'xxxxxxxx'              # 发件人邮箱密码
    cc_user='xxxxxxxx@xxxxxxxxx.com'
    test_receiver='xxxxxxxxxx@xxxxxxxx.com'
    gmail_user='xxxxxxx@qq.com' # 加入bcc的好处是可以自己确认是否发送成功,以及邮件的格式
    
    def mail(status):
        ret=True
        try:
            msg=MIMEText('Check '+status+' for work. Thanks!','plain','utf-8')
            msg['From']=formataddr(["xxxxx",mail_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
            msg['To']=formataddr(["xxxxx",test_receiver]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
            msg['Cc']=formataddr(["xxxxx",cc_user])
            msg['Bcc']=formataddr(["xxxxx", gmail_user])
            today=datetime.date.today()  
            title = "xxxxxxxxx-xxxxxx-"+ datetime.date.today().strftime('%Y%m%d') +" Check "+status
            msg['Subject']=title
    
            server=smtplib.SMTP("smtp.xxxxxxxx.com", 25)  # 发件人邮箱中的SMTP服务器,端口是25,这里需要关注自己邮箱的设置,如果是SSL要调用定外的接口
            server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
            server.sendmail(mail_sender,[test_receiver,cc_user,gmail_user],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
            server.quit()  # 关闭连接
        except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
            ret=False
            print 4
        return ret
    
    def check_time():
        in_mail_sent = False
        out_mail_sent = False
        sent_day=datetime.date.today()
        tz=pytz.timezone('Asia/Shanghai')  # 很多机器的时区是GMT+0, 因此要设置城东八区
        while True:
            ts_start = datetime.datetime.now(tz)
            print ts_start
            print ts_start.hour
            if ts_start.hour==9 and not in_mail_sent:
                ret=mail("in")
                if ret:
                    print("Check in邮件发送成功")
                else:
                    print("Check in邮件发送失败")
                in_mail_sent = True
            elif ts_start.hour==19 and not out_mail_sent:
                ret=mail("out")
                if ret:
                    print("Check out邮件发送成功")
                else:
                    print("Check out邮件发送失败")
                out_mail_sent = True
            else:
                print("waiting...")
                if datetime.date.today() != sent_day:
                    print("reset for new day")
                    in_mail_sent = False
                    out_mail_sent = False
                    sent_day = datetime.date.today()
            time.sleep(100)
    
    check_time()
    print("quit!")
    
    展开全文
  • 主要为大家详细介绍了Python3实现带附件的定时发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本文是用Python写的一个自动发送邮件的脚本,调用函数时,直接把件人邮箱地址、密码、收件人邮箱地址、邮件标题、内容等信息传递给函数,即可实现自动发送邮件功能。 脚本代码如下: # -*- coding: UTF-8 -*- ...
  • Python邮件自动定时发送(完整版)

    千次阅读 2020-07-19 21:04:43
    参加数据分析实习的时候公司需要实行邮件自动发送预警,因此,这里做一个简单的总结,我也查看了网上的博客,大都有相应的方法,但是他们没有将代码做一个封装,我这里做出了一个封装补充,可以便于以后在本地进行...
  • python定时邮件发送。 话不多说直接上代码: # 导入相关库-email from email.mime.multipart import MIMEMultipart # 构建邮件头信息,包括件人,接收人,标题等 from email.mime.text import MIMEText # 构建邮件
  • 文章目录1. 邮箱设置1.1 设置1.2 获取... 定时任务3.1 schedule库3.2 定时发送邮件推荐阅读 大家好,我是欧K。 在工作中我们经常需要在每周、每天或者其他时间周期做工作汇报、文件发送之类的工作,这个时候如果可以设
  • linux下基于python自动定时发送邮件附件 每天晚上要给她发送一个当天的报表;每天?excuse me?...python自动发送邮件, 基于SMTP协议,使用email和smtplib库 linux定时执行, cron AUTO-Email python co...
  • Python 自动发送邮件详细教程

    千次阅读 2020-06-26 23:45:57
    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池...下面就来讲讲怎么用Python构建一个自动发送邮件的脚本。 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点
  • 1、最近公司实现部分数据统计、分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linux上使用shell配置发送,实在是太繁琐,所以准备使用python来实现该...
  • python3自动发送邮件并添加附件

    千次阅读 热门讨论 2019-09-25 00:50:29
    将本地报表文件以附件形式添加到邮件发送 设置定时任务 代码 import pymysql import pandas as pd import smtplib from email.header import Header from email.mime.text import MIMEText from email.m...
  • python使用outlook发送带附件邮件
  • 自动发送邮件可以将常规化得需求自动化,解放双手做更多有意义的事情
  • 下面让我们构建一个小型的自动发送邮件系统,来演示这个能力。 让我们假设有这样一个html的表单: ————————————– <HTML> <HEAD> <TITLE>Request for more information</TITLE>...
  • 说起自动化绝对算是茶余饭后最有显B格的谈资,毕竟解放双手是从老祖先那里就流传下来的基因,都2020了,你每天上班还要登录各个邮箱账号查收邮件?快来解锁本章内容 很多人学习python,不知道从何学起。 很多人学习...
  • 钉钉自动上下班打卡辅助,基于Python,adb,实现,打卡后自动发送邮件提醒。
  • python实现自动发送qq邮件(表白神器) 功能:发送的内容包括情话加插图,并推送对象所在城市的天气信息。内容格式为html格式。 文字来源:事先准备的文件SweetSentences.txt(中英文双语表白情话) 插图来源:事先...
  • 收发邮件几乎是每个人每天都需要做的一件事情,对于一些固定每天需要发送的邮件或者是同时需要发送好几十好几百份的时候,我们可以考虑借助Python自动发送邮件。在利用Python进行发送邮件时主要借助smtplib和email...
  • 一、如何自动发送邮件? #!/user/bin/python # -*- coding:utf-8 -*- import smtplib from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.mime.multipart import ...
  • 这周有需求将Bi报表每天定时自动的群发给team成员,今天搜集资料完成了这个需求,可以发送普通文本,图片,附件已经html形式将其展现出来,整套代码如下;已亲测可行,相关信息已脱敏~ 写完脚本后登陆控制面板-&...
  • 导入定时发送邮件模块yagmail 确定件人、件人授权码、收件人、SMTP服务器信息 确定发送邮件主题、内容、附件信息 基于schedule实现定时发送邮件 安装yagmail模块 登陆qq邮箱(或者其他邮箱)并且开启...
  • 利用python自动发送带附件的邮件

    千次阅读 2018-10-31 23:23:23
    利用python自动发送邮件 说道邮件,必须要了解相关的协议。 简单地说,SMTP管‘’,POP3/IMAP管‘收’。 POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会...
  • python下(outlook)自动发邮件

    千次阅读 2020-02-24 20:45:52
    前言:我的测试环境是... 通过以下代码可以自动发邮件 import win32com.client as win32 def send_mail(): outlook = win32.Dispatch('Outlook.Application') mail_item = outlook.CreateItem(0) # 0: cre...
  • python定时发送邮件

    2019-09-03 23:20:55
    E:\reptile\day10\邮件发送\具体故事.py #-*-coding:utf-8-*- #-*-coding:utf-8-*- import requests,json from fake_useragent import UserAgent from lxml import etree import random ua=UserAgent() def story_...
  • 本文是用Python写的一个自动发送邮件的脚本,调用函数时,直接把件人邮箱地址、密码、收件人邮箱地址、邮件标题、内容等信息传递给函数,即可实现自动发送邮件功能。脚本代码如下:# -*- coding: UTF-8 -*-import ...
  • 介绍的是通过定时执行python脚本,可以实现定期批量访问网站,如果发现网站打不开,第一时间发邮件到管理员邮箱进行预警。有需要的可以参考借鉴。
  • 超简单的Python发邮件模块 需要独立安装 keyring模块介绍 从Python访问系统密匙环服务 方便、安全地存储你的密码 schedule模块简介 超容易理解的定时任务执行器 需要单独安装、不包含在标准模块里面 imbox...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,460
精华内容 2,984
关键字:

python定时自动发送邮件

python 订阅