29利用Python发送邮件

安装模块
cmd下 使用命令语句:pip install yagmail keyring schedule imbox
注册一个邮箱,开通POP3/SMTP/IMAP服务,会要求设置授权码,点击开启
保存密码
操作步骤:打开cmd命令行
输入:python
输入:import yagmail
enter后再键入:yagmail.register(“[email protected]”,‘pwd’)
注意这里的pwd就是刚刚设置好的授权码
发送一封邮件
yagmail.SMTP(user = 用户名, host= SMTP服务器域名)

import yagmail

yag = yagmail.SMTP(user = '[email protected]', host = 'smtp.163.com')
contents = ['早上好',
           '好好学习']
           
yag.send('[email protected]','这是一封邮件',contents)

发送内嵌图片的邮件

import yagmail

yag = yagmail.SMTP(user = '[email protected]', host = 'smtp.163.com')
contents = ['早上好',
           '好好学习',
           '百度网站',
           yagmail.inline('demo.jpg')]
           
yag.send('[email protected]','这是一封邮件',contents)

发送附件

contents = ['这是第一段的内容',
           '这是第二段的内容',
           '百度网站',
           'demo.png']

群发邮件

import yagmail
import os
os.chdir("D:\\python_major\\auto_office")

yag = yagmail.SMTP(user = '[email protected]', host = 'smtp.163.com')
contents = ['这是第一段的内容',
           '这是第二段的内容',
           '百度网站',
           yagmail.inline('demo.png')]

yag.send(['[email protected]','[email protected]'],'这是一封邮件',contents)

定时任务
schedule定时任务

import schedule 
import time

def job():
    print("我在干活呢!")
    
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at('10:30').do(job)
schedule.every(5).to(10).minutes.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute(":17").do(job)
#every()后面的内容不填的话就是默认是1

while True:
    schedule.run_pending()
    time.sleep(1)

综合应用

import os  # 导入系统模块
os.chdir("D:\\shiyan\\OFFICE\\Email")  # 改变当前工作目录到指定的路径
import time  # 导入时间模块
import yagmail  # 导入邮箱模块
import random    # 导入随机数模块
import schedule  # 导入定时任务模块

def get_data():   # 定义获取数据函数
	from openpyxl import load_workbook  # 导入openpyxl模块
	workbook = load_workbook(filename = '2019年10月网易新闻.xlsx')  # 打开指定文件
	sheet = workbook.active  # 指定sheet表格
	data_size = sheet.dimensions  # 获取表格大小
	size_ls = data_size.split(":")  # 以':'分割数据
	col_min,row_min,col_max,row_max = size_ls[0][0],size_ls[0][1],size_ls[1][0],size_ls[1][1:] # 取出行列的数值
	
	num = random.randint(int(row_min)+1,int(row_max)+1)  # 取出行的随机数
	ls_data = []  # 创建数据的空列表
	for col in range(ord(col_min),ord(col_max)+1):  # 遍历列
		ls_data.append(sheet[chr(col)+str(num)].value)  # 取出随机的一行数据放入列表中

	return ls_data  # 返回数据列表

def get_news():  # 定义发送邮件函数
	yag = yagmail.SMTP(user = '[email protected]', host = 'smtp.163.com')  # 发件箱
	contents = get_data()   # 发件内容
	yag.send('[email protected]','每日新闻一条',contents)  # 收件箱
	print('发送成功')  # 输出

schedule.every().day.at('19:35').do(get_news)  # 定时任务

while True:   # 循环执行
    schedule.run_pending()  # 保持schedule一直运行
    time.sleep(1)  # 暂停一秒

你可能感兴趣的:(Python职场实用技能,python)