自动发送日报,骗过你的领导^-^

作为一个大(忘)忙(事)人(佬),每天写日报这种事儿简直就是种折磨。

而碰巧领导又让你天天写日报,这不是要了老命了吗,所以咯,殚精竭虑之后,本人写了个自动发送周报的程序,每天定时发送一封写的声色俱全的日报给领导。

切入正题吧。

程序是用python写的发送email的程序,使用shell写的逻辑,使用linux服务器制定定时任务定时发送。

括弧 自己拥有服务器的土豪可以自己在服务器上装mail命令,就不用自己写邮件发送程序了,由于使用公共服务器,并没有安装程序的权限,所以自己用python写了邮件发送程序。

整个程序的目录结构是这样的

drwxrwxr-x  2 * * 4096 Jul 28 17:17 ./
drwxr-xr-x 15 * * 4096 Jul 28 17:17 ../
-rw-rw-r--  1 * *  288 Jul 28 12:10 rlist    #工作内容列表,用来在自己忘了填充内容的时候随机编造工作内容
-rw-rw-r--  1 * *    0 Jul 28 13:00 send.log   #执行log查看给领导发送的邮件内容,免得漏了陷
-rwxrwxr-x  1 * *  527 Jul 28 17:17 sendmail.sh*  #手写邮件发送程序 有mail程序的服务器可以不用这个文件
-rwxrwxr-x  1 * * 1082 Jul 28 17:05 send.py*    #发送邮件的主程序
-rw-rw-r--  1 * *   34 Jul 28 17:10 today      #发送邮件的今日工作内容
-rw-rw-r--  1 * *   93 Jul 28 17:14 tomorrow    #发送邮件的昨日工作内容  

 rlist 就是个列表,里面随便编上几十个工作内容。越多越好,越详细越好。

回顾代码
优化后台功能
重构代码
修改bug
检查代码性能
回顾代码
优化后台功能
重构代码
修改bug
检查代码性能
回顾代码
优化后台功能
重构代码
修改bug
检查代码性能

 发送邮件的程序,可以使用mail命令代替

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

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
import argparse
import time

parser = argparse.ArgumentParser()
parser.add_argument("content")
args = parser.parse_args()


times  = time.strftime('%Y-%m-%d',time.localtime(time.time()))

content = args.content

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr(( \
        Header(name, 'utf-8').encode(), \
        addr.encode('utf-8') if isinstance(addr, unicode) else addr))

from_addr = "***********"
password = "*********"
to_addr = "***********"
smtp_server = "*********"

msg = MIMEText(content, 'html', 'utf-8')
msg['From'] = _format_addr(u'***** <%s>' % from_addr)
msg['To'] = _format_addr(u'**** <%s>' % to_addr)
msg['Subject'] = Header(u'【日报】'+times, 'utf-8').encode()

server = smtplib.SMTP(smtp_server, 25)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr,"****抄送一份给自己****"], msg.as_string())
server.quit()
~                 

接下来就是整个程序的逻辑了

#! /bin/bash
# 随机数生成方法 function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) #增加一个10位的数再求余 echo $(($num%$max+$min)) } echo "开始发送邮件"
#进入程序所在的目录
cd /***/***/***/sendEmail
#接下来的两行代码目的是为了随机一个半小时之内的休息时间,这样每次领导收到日报的时间都不一样,所以更难猜到是定时发送任务。 slt
=`rand 1 1800 ` sleep $slt

#判断明日目标是否存在,不存在的话从理由列表中随机出一份
if [ -f tomorrow ];then to=$(cat tomorrow) else l=`rand 1 10` to=$(sed -n $l'p' rlist) echo $to > tomorrow fi
#从today中拿取今日目标 tod
=$(cat today)
#将明日目标和今日目标合成一个内容 content
="今日任务:<br/>"$tod"<br/>明日任务:<br/>"$to
#删除今日目标(因为已经没用啦) rm today
#将明日目标改名为今日目标(废话 今天的明天不就是明天的今天吗) mv tomorrow today
#发送邮件(如果用mail命令修改这一行就行啦) python2.
7 send.py $content
#往log里面打印一条成功信息 echo $content
"发送成功"

整体来说,程序的用法是,如果自己记得需要发日报这回事,就赶紧上服务器上写一份明日工作计划放到tomorrow文件里面,如果忘了呢就是自动从rlist列表里面随机出一份,然后随机一个时间给领导发过去,让领导觉得你是一个比较规律发日报的好同志!

最后的最后,设定一个定时器,让这个程序每天定时执行就行了

shell里面输入

crontab -e

然后添加这么一条信息就ok了

30 17 * * * /***********/sendEmail/sendmail.sh >> /**********/sendEmail/send.log 2>&1

 

转载于:https://www.cnblogs.com/wencheng256/p/zidongribao.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值