Python(1)自动发送邮件
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。
smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。
1.smtplib模块
import smtplibsmtp = smtplib.SMTP() smtp.connect('smtp.163.com,25') smtp.login(username, password) smtp.sendmail(sender, receiver, msg.as_string()) smtp.quit()
2.email模块
from email.mime.text import MIMEText from email.header import Header from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart
我们必须把Subject,From,To添加到MIMEText对象或者MIMEMultipart对象中,邮件中才会显示主题,发件人,收件人。
# 组装邮件内容和标题,中文需参数‘utf-8’,单字节字符不需要msg = MIMEMultipart()msg['Subject'] = Header(subject)msg['From'] = sendermsg['To'] = ','.join(user_list)
3.编写发件函数,方便调用
自动化测试报告为HTML,以附件方式发送,
不管什么类型的附件,都可以用MIMEApplication,MIMEApplication默认子类型是application/octet-stream
# 发送html内容的邮件 import smtplib import time import os from email.mime.text import MIMEText from email.header import Header from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipartclass SendMail():def find_new_file(self, dir):'''查找目录下最新的文件'''file_lists = os.listdir(dir)file_lists.sort(key=lambda fn: os.path.getmtime(dir + "\\" + fn)if not os.path.isdir(dir + "\\" + fn)else 0)# print('最新的文件为: ' + file_lists[-1])file = os.path.join(dir, file_lists[-1])print('完整文件路径:', file)return filedef send_mail_html(self, file):'''发送html格式测试报告邮件'''# 发送邮箱sender = 'name@163.com'# 接收邮箱user_list = ['user@foxmail.com','user@qq.com','user@qq.com']# 发送邮件主题t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())subject = '接口自动化测试结果(请下载附件查看)_' + t# 发送邮箱服务器smtpserver = 'smtp.163.com'# 发送邮箱用户/密码username = 'user@163.com'password = 'youer_password'# 组装邮件内容和标题,中文需参数‘utf-8’,单字节字符不需要msg = MIMEMultipart()msg['Subject'] = Header(subject)msg['From'] = sendermsg['To'] = ','.join(user_list)# ---这是附件部分---# html类型附件,不管什么类型的附件,都可以用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。part = MIMEApplication(open(file, 'rb').read())part.add_header('Content-Disposition', 'attachment', filename=file)msg.attach(part)# 登录并发送邮件try:smtp = smtplib.SMTP()smtp.connect(smtpserver)smtp.login(username, password)smtp.sendmail(sender, user_list, msg.as_string())except BaseException:print("邮件发送失败!")else:print("邮件发送成功!")finally:smtp.quit()if __name__ == '__main__':sen = SendMail()dir = r'D:\\api\\report' # 指定文件目录b = sen.find_new_file(dir) # 查找最新的html文件sen.send_mail_html(b) # 发送html内容邮件
ps:
python邮件发送给多人时,只有第一个人能收到的问题,
MIMEText()["to"]的数据类型与sendmail(from_addrs,to_addrs,...)的to_addrs不同;前者为str类型,多个地址使用逗号分隔,后者为list类型。
expects toaddrs to be a list of email addresses. (Or, of course, just use recipients in place of toaddrs.)
参考链接:https://stackoverflow.com/questions/20509427/python-not-sending-email-to-multiple-addresses
转载于:https://www.cnblogs.com/mingfan/p/10958981.html
Python(1)自动发送邮件相关推荐
- Python实现自动发送邮件(详解)
Python实现自动发送邮件 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 ...
- 如何用python自动发邮件_Python | 解放双手,用Python实现自动发送邮件
解放双手,用Python实现自动发送邮件 使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间. Python有两个内置库:smtplib和email,能够实现邮件功能, ...
- python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)
python自动发送邮件,实现同时给多人发送和邮箱轰炸(注意尽量不要轰炸哦,小心封号). 要想自动发送邮件首先需要获得我们邮箱的授权码. 授权码获取 QQ邮箱主页 >设置>账户> ...
- Python数据分析实战【六】:用Python实现自动发送邮件和发送钉钉消息【文末源码地址】
目录 发送邮件源码 发送钉钉消息源码 源码地址 本文可以学习到以下内容: 使用requests库发送钉钉消息 使用email和smtplib库发送邮件 使用163邮箱服务,自动发送邮件及附件 发送邮件 ...
- PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)
测试文件与代码结构 一, QQ邮箱发送邮件 大致步骤 1.登录qq邮箱,选择设置 2.点击账户,进入设置界面 3.授权,生成授权码 4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP ...
- python脚本自动发送邮件和叮叮机器人发送群消息
一.发送邮件 写脚本前需配置邮件获取授权码,如下图,开启POP3/SMTP服务 import yamail import requests import time import hmac import ...
- PYTHON实现自动发送邮件
纯个人记录使用,如有侵权请联系我删除 会用到smtplib 跟email,因为具体使用方法可以百度 源码 def send_eamil(receiver):global msgsender = '** ...
- 高效办公,如何利用Python自动发送邮件
自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...
- 利用Python自动发送邮件
自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...
- 自动发送邮件的服务器,自动邮件发送_任何情况立刻通知你
原标题:自动邮件发送_任何情况立刻通知你 Python自动邮件发送 在日常工作中,我们经常需要收发邮件,不知大家可曾想过,如果能够实现自动发送,那岂不是爽歪歪~ 就像跑图像检测的模型经常跑一两天,如果 ...
最新文章
- 有关计算机辅助教学方面的问题,浅析高校计算机辅助教学应用的有关问题
- firewalld的9个zone、firewalld关于zone和service的操作
- Qt Designer手册
- Day 9 函数的初识1
- java sax xml文件解析_java解析xml文件-DOM/SAX
- web前端学习笔记(二)---Django
- PostgreSQL环境变量
- ESP8266之ESP8266WebServer库学习
- 海思Hi3519AV100sensor移植之一-- imx307
- 概率论——伯努利和二项随机变量
- 苹果cms V10模板 仿挖片自适应电影模板
- 华为智慧园区解决方案 -重新定位园区
- Qt::WA_DeleteOnClose介绍与注意事项
- 【机器学习】课程设计布置:某闯关类手游用户流失预测
- linux查看jdk版本_linux环境查看jdk版本
- 关于Python可视化Dash工具—plotly基本图形
- JavaScript实现动态广告弹出框
- windows 程序设计 第一章
- Coding 配置SSH凭据
- php实现狼和兔子,兔子和狼作文4篇
热门文章
- ddr3写操作app_wdf_end说明
- 软件工程课程周学习进度报告——第四周
- DotNet 多线程下载
- “沉浸式大型线下游戏”?看看这次腾讯TGC上如何玩很大!
- [284]python使用execjs执行js
- fstream —文件读写操作
- linux系统漏洞补丁包,RedHat 5.X、6.X Bash漏洞RPM补丁包下载
- case语句使用举例
- NLP-基础任务-中文分词算法(1)-基于词典: 机械分词(词典字符串匹配):前向最大匹配、后向最大匹配、双向最大匹配【OOV:基于现有词典,不能进行新词发现处理】
- Letter to a newborn son