python编程快速上手办公自动化_关于电子邮件分配任务的解答

编写一个程序,接受一个电子邮件地址的列表,以及一个需要做的家务活列表
随即将家务活分配给他们。用电子邮件通知每个人分配给他们的任务。
如果你觉得需要挑战,就记录每个人之前分配家务活的记录,确保程序不会分配重复的活动
另一个可能的功能,安排程序每周自动运行一次

基础版本

import smtplib,random
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {'Rabbit':'Rabbit@qq.com',
             'Dog':'Dog@qq.com',
             'Cat':'Cat@qq.com'}
# 邮箱设置
fromMail = ''	# 自行输入
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
for maidName,maidMail in maidDict.items():
    randomChore = random.choice(chores)
    chores.remove(randomChore)
    print(maidName.rjust(6),'should',randomChore.ljust(8))
    body = 'Subject:New task.\nDear %s,today you should %s.' \
           'Thanks.'%(maidName,randomChore)
    smtpObj.sendmail(fromMail,maidMail,body)
smtpObj.quit()

进阶版本

import smtplib,random
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {
    'Rabbit':{'mail':'Rabbit@qq.com',
              'last chore':''},
    'Dog':{'mail':'Dog@qq.com',
              'last chore':''},
    'Cat':{'mail':'Cat@qq.com',
              'last chore':''},
    }
# 邮箱设置
fromMail = ''
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
choreCut = chores[:]# 第一次
for maidName,maidInformation in maidDict.items():
    randomChore = random.choice(choreCut)
    while(randomChore == maidInformation['last chore']):
        randomChore = random.choice(choreCut)
    choreCut.remove(randomChore)
    maidInformation['last chore'] = randomChore
    print('first:',maidName.rjust(6),'should',randomChore.ljust(8))
    body = 'Subject:New task.\nDear %s,today you should %s.' \
           'Thanks.'%(maidName,randomChore)
    smtpObj.sendmail(fromMail,maidInformation['mail'],body)
smtpObj.quit()

终极版本

import smtplib,random,datetime,time
# 列表
chores = ['dishes','bathroom','vacuum','walk dog']
maidDict = {
    'Rabbit':{'mail':'Rabbit@example.com',
              'last chore':''},
    'Dog':{'mail':'Dog@example.com',
              'last chore':''},
    'Cat':{'mail':'Cat@example.com',
              'last chore':''},
    }

oneWeek = datetime.timedelta(seconds=7)
rounds = 0   # 轮回次数
# 邮箱设置
fromMail = ''
secretCode = ''
smtpObj = smtplib.SMTP('smtp.qq.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(fromMail,secretCode)
# 分配任务
while True:
    rounds += 1
    choreCut = chores[:]# 第一次
    for maidName,maidInformation in maidDict.items():
        randomChore = random.choice(choreCut)
        while(randomChore == maidInformation['last chore']):
            randomChore = random.choice(choreCut)
        choreCut.remove(randomChore)
        maidInformation['last chore'] = randomChore
        print(str(rounds),":",maidName.rjust(6),'should',randomChore.ljust(8))
        body = 'Subject:New task.\nDear %s,today you should %s.' \
               'Thanks.'%(maidName,randomChore)
        smtpObj.sendmail(fromMail,maidInformation['mail'],body)
    print(str(oneWeek),'后再次启动!')
    time.sleep(oneWeek.seconds)
smtpObj.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值