python自定义时间定时发送带附件抄送outlook邮件

# -*- coding: utf-8 -*-

"""

Module 根据定义的Task,发送邮件提醒,避免遗漏处理

"""

from asyncio import exceptions

import os

import xlrd

import schedule

import time

import win32com.client as win32

from datetime import datetime,date

dictWeek={0:"Monday",1:"TuesDay",2:"Wednesday",3:"Thursday",4:"Friday",5:"Saturday",6:"Sunday"}

def job():

    sPath = os.getcwd()

    sFile = "Task.xls"

    sExcelFile = sPath +"\\" + sFile

    print("执行完成")

    wb = xlrd.open_workbook(filename=sExcelFile)

       

    sheet1 = wb.sheet_by_index(0)  

    nrows1 = sheet1.nrows

     

    #注意weekday() 返回的是0-6是星期一到星期日

    sWeekday = dictWeek.get(datetime.now().weekday())

    sNow = datetime.now()

    iDay = sNow.day

    sToday= formatDay(sNow,"yyyy-mm-dd")

    for iRow in range(1,nrows1):

        sCheck = sheet1.cell(iRow,3).value

        if sCheck != "Y":

            sFrequency = sheet1.cell(iRow,0).value

            s1 = sheet1.cell(iRow,1).value

            if sFrequency == "Week":

                if s1 == sWeekday:

                    s2 = sheet1.cell(iRow,2).value

                    sendEmail(s2)

            elif sFrequency == "Day":

                if formatDay(s1) == sToday:

                    s2 = sheet1.cell(iRow,2).value

                    sendEmail(s2)

            elif sFrequency == "Month":

                if int(s1) == int(iDay):

                    s2 = sheet1.cell(iRow,2).value

                    sendEmail(s2)

                       

def formatDay(sDay,sFormat):

    sYear = str(sDay.year)

    sMonth = str(sDay.month)

    sDay = str(sDay.day)

    if sFormat == "yyyy-mm-dd":

        sFormatDay = sYear +"-" +sMonth.zfill(2)+"-" +sDay.zfill(2)

    else:

        sFormatDay = sYear+"-" + sMonth + "-" + sDay

         

    return sFormatDay

     

def sendEmail(sTask):

    try:

    #读取config.txt,获得发送的目标邮箱账号

        sConfigFile="config.txt"

             

        f=open(sConfigFile,'r')

        try:

            file_Context=f.read()

        except:

            return False

        finally:

            if f:

                f.close()

         

        outlook = win32.Dispatch('outlook.application')

        mail = outlook.CreateItem(0)

        receivers = [file_Context]

        mail.To = receivers[0]

        mail.Subject ='来自系统自动发送的邮件'

        mail.CC = 'XXXX@XXXX.com.cn'  # 抄送人

        mail.Importance = 2  #设置重要性为高

        mail.Body="邮件提醒:  \r\n    请注意处理任务作业,如已处理可忽略此封邮件。\r\n   任务内容:" + sTask + " \r\n     (此邮件由系统自动发送)"

        #mail.Attachments.Add('C:\\Users\enegc\\OneDrive - Bayer\\Personal Data\\'+sFileName+'.xlsx')

        mail.Attachments.Add(r'F:\wmssj\Task.xls')

        mail.Send()

        return True

    except exceptions as e:

        return False

schedule.every().day.at("10:40").do(job)

while True:

    schedule.run_pending()

    time.sleep(1)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxj19880502

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值