Python3.0 我的DailyReport 脚本(四)发送日报

其实不会用Python,跟风装了Python3.0,看了几天自带的Manual,写个日报的脚本玩玩,不用不要紧,一用感觉还挺好用的

Host:http://code.google.com/p/haozesdailyreport/

Code
#!/usr/bin/env python
#
coding=utf-8
#
发送日报主程序
from MailSender import *
from DBHelper import *
from ExcelHelper import *
from datetime import *
from string import Template
import logging

def inputReport():
    today
=datetime.today()
    weekday
=today.isoweekday()
    
if weekday==1:
        d
=datetime.today()-timedelta(days=3)
    
elif weekday==7:
        d
=datetime.today()-timedelta(days=2)
    
else:
        d
=datetime.today()-timedelta(days=1)
    dateStr
=d.strftime("%Y-%m-%d")
    workContent
=''
    workPecent
=100
    workHour
=8
    workPlan
=''
    workQuestion
=''
    
    
while workContent=='':
        workContent
=input('请输入:'+dateStr+'  工作内容:').strip()
        
    workPecent
=int(input('请输入 工作完成情况(百分数):').strip())
    workHour
=int(input('请输入 工作时间(小时):').strip())    
    
    
while workPlan=='':
        workPlan
=input('请输入 次日的工作计划:').strip()
        
    
while workQuestion=='':
        workQuestion
=input('请输入 遗留问题:').strip()
        
    report
={'reportDate':d,'work':workContent,'percent':workPecent,'hourSpent':workHour,'tommorrowPlan':workPlan,'question':workQuestion}
    
return report

def createReportHtml(r):
    t 
= Template(getHmtlTemplate())
    
return t.substitute(reportDate=r['reportDate'].strftime("%Y-%m-%d"),work=r['work'],percent=r['percent'],hourSpent=r['hourSpent'],tommorrowPlan=r['tommorrowPlan'],question=r['question'])
    
#邮件的html模版
def getHmtlTemplate():
    tplstr
='''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
        <style type="text/css">
            .style1 {
                height: 27.0pt;
                width: 54pt;
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style2 {
                width: 459pt;
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style3 {
                width: 164pt;
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style4 {
                width: 183pt;
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style5 {
                height: 13.5pt;
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style6 {
                color: #376091;
                font-size: 11.0pt;
                font-weight: 700;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style7 {
                height: 81.0pt;
                color: black;
                font-size: 11.0pt;
                font-weight: 400;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style8 {
                width: 206pt;
                color: black;
                font-size: 11.0pt;
                font-weight: 400;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: normal;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style9 {
                color: black;
                font-size: 11.0pt;
                font-weight: 400;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: nowrap;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
            .style10 {
                width: 164pt;
                color: black;
                font-size: 11.0pt;
                font-weight: 400;
                font-style: normal;
                text-decoration: none;
                font-family: 宋体;
                text-align: center;
                vertical-align: middle;
                white-space: normal;
                border: .5pt solid windowtext;
                padding-left: 1px;
                padding-right: 1px;
                padding-top: 1px;
            }
        </style>
    </head>
    <body>
    
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse:
     collapse;width:860pt" width="1147">
            <colgroup>
                <col style="width:54pt" width="72" />
                <col style="mso-width-source:userset;mso-width-alt:8800;width:206pt" 
                    width="275" />
                <col style="mso-width-source:userset;mso-width-alt:4064;width:95pt" 
                    width="127" />
                <col style="mso-width-source:userset;mso-width-alt:6752;width:158pt" 
                    width="211" />
                <col style="mso-width-source:userset;mso-width-alt:6976;width:164pt" 
                    width="218" />
                <col style="mso-width-source:userset;mso-width-alt:7808;width:183pt" 
                    width="244" />
            </colgroup>
            <tr height="18" style="height:13.5pt">
                <td class="style1" height="36" rowspan="2" width="72">
                    日期</td>
                <td class="style2" colspan="3" width="613">
                    工作日报</td>
                <td class="style3" rowspan="2" width="218">
                    明日计划</td>
                <td class="style4" rowspan="2" width="244">
                    待解决问题及心得</td>
            </tr>
            <tr height="18" style="height:13.5pt">
                <td class="style5" height="18">
                    工作内容</td>
                <td class="style6">
                    完成情况</td>
                <td class="style6">
                    估计用时(小时)</td>
            </tr>
            <tr height="108" style="mso-height-source:userset;height:81.0pt">
                <td class="style7" height="108">
                    $reportDate</td>
                <td class="style8" width="275">
                    $work</td>
                <td class="style9">
                    $percent%</td>
                <td class="style9">
                    $hourSpent</td>
                <td class="style10" width="218">
                    $tommorrowPlan</td>
                <td class="style9">
                $question
                     </td>
            </tr>
        </table>
    
    </body>
    </html>
    
'''
    
return tplstr

def sendReport(report):
    
#添加收件人
    try:
        sender
=MailSender('mail.iflytek.com','25')
        sender.login(
'myaccout@iflytek.com','pwd')
    
except:
        
print("登陆smtp服务器失败!:", sys.exc_info()[0])
        logging.error(sys.exc_info()[0])
        input()
        exit()    
    sender.to
='haozes@gmail.com'
    
#抄送人,如果是周五的日报,需要抄给部门秘书,其他只抄给项目经理
    if report['reportDate'].isoweekday()==1:
        sender.cc
='xxx@iflytek.com'
    
else:
        sender.cc
='xxx@iflytek.com,yyy@iflytek.com'
    mailContent
=createReportHtml(report)
    
#print(mailContent)
    
    sender.html
=mailContent
    sender.setSubject(report[
'reportDate'].strftime("%Y-%m-%d")+" 工作日报--Haozes")
    
try:
        sender.send()
        db.updateReport(report)
    
except:
        
#db.delReport(report)
        logging.error(sys.exc_info()[0])
            
    info
='{0} 日报已发送,收件人:{1},抄送人:{2}'.format(report['reportDate'].strftime("%Y-%m-%d"),sender.to,sender.cc)
    logging.info(info)


        
LOG_FILENAME 
= 'log.txt'
logging.basicConfig(filename
=LOG_FILENAME,level=logging.INFO,)
    
if __name__ == "__main__":  
    db
=DBHelper(r'dailyReport.db3')          
    report
=inputReport()
    
while(input('重新输入数据?(Y/N)').strip()=='Y'):
        report
=inputReport()
    
#print(report)
    if db.addReport(report):
        
print('插入数据库成功!')
    
else:
        
print('该日日报已发送!')
        input()
        exit()    
    sendReport(report)
    
print('日报已发送!')
    input(
'press key to exit')

 

最后,我Fuck 日报制度!

posted on 2009-09-10 17:07  Haozes  阅读(1435)  评论(0编辑  收藏  举报