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)自动发送邮件相关推荐

  1. Python实现自动发送邮件(详解)

    Python实现自动发送邮件 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 ...

  2. 如何用python自动发邮件_Python | 解放双手,用Python实现自动发送邮件

    解放双手,用Python实现自动发送邮件 使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间. Python有两个内置库:smtplib和email,能够实现邮件功能, ...

  3. python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)

    python自动发送邮件,实现同时给多人发送和邮箱轰炸(注意尽量不要轰炸哦,小心封号). 要想自动发送邮件首先需要获得我们邮箱的授权码. 授权码获取  QQ邮箱主页  >设置>账户> ...

  4. Python数据分析实战【六】:用Python实现自动发送邮件和发送钉钉消息【文末源码地址】

    目录 发送邮件源码 发送钉钉消息源码 源码地址 本文可以学习到以下内容: 使用requests库发送钉钉消息 使用email和smtplib库发送邮件 使用163邮箱服务,自动发送邮件及附件 发送邮件 ...

  5. PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)

    测试文件与代码结构 一, QQ邮箱发送邮件 大致步骤 1.登录qq邮箱,选择设置 2.点击账户,进入设置界面 3.授权,生成授权码 4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP ...

  6. python脚本自动发送邮件和叮叮机器人发送群消息

    一.发送邮件 写脚本前需配置邮件获取授权码,如下图,开启POP3/SMTP服务 import yamail import requests import time import hmac import ...

  7. PYTHON实现自动发送邮件

    纯个人记录使用,如有侵权请联系我删除 会用到smtplib 跟email,因为具体使用方法可以百度 源码 def send_eamil(receiver):global msgsender = '** ...

  8. 高效办公,如何利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

  9. 利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

  10. 自动发送邮件的服务器,自动邮件发送_任何情况立刻通知你

    原标题:自动邮件发送_任何情况立刻通知你 Python自动邮件发送 在日常工作中,我们经常需要收发邮件,不知大家可曾想过,如果能够实现自动发送,那岂不是爽歪歪~ 就像跑图像检测的模型经常跑一两天,如果 ...

最新文章

  1. 有关计算机辅助教学方面的问题,浅析高校计算机辅助教学应用的有关问题
  2. firewalld的9个zone、firewalld关于zone和service的操作
  3. Qt Designer手册
  4. Day 9 函数的初识1
  5. java sax xml文件解析_java解析xml文件-DOM/SAX
  6. web前端学习笔记(二)---Django
  7. PostgreSQL环境变量
  8. ESP8266之ESP8266WebServer库学习
  9. 海思Hi3519AV100sensor移植之一-- imx307
  10. 概率论——伯努利和二项随机变量
  11. 苹果cms V10模板 仿挖片自适应电影模板
  12. 华为智慧园区解决方案 -重新定位园区
  13. Qt::WA_DeleteOnClose介绍与注意事项
  14. 【机器学习】课程设计布置:某闯关类手游用户流失预测
  15. linux查看jdk版本_linux环境查看jdk版本
  16. 关于Python可视化Dash工具—plotly基本图形
  17. JavaScript实现动态广告弹出框
  18. windows 程序设计 第一章
  19. Coding 配置SSH凭据
  20. php实现狼和兔子,兔子和狼作文4篇

热门文章

  1. ddr3写操作app_wdf_end说明
  2. 软件工程课程周学习进度报告——第四周
  3. DotNet 多线程下载
  4. “沉浸式大型线下游戏”?看看这次腾讯TGC上如何玩很大!
  5. [284]python使用execjs执行js
  6. fstream —文件读写操作
  7. linux系统漏洞补丁包,RedHat 5.X、6.X Bash漏洞RPM补丁包下载
  8. case语句使用举例
  9. NLP-基础任务-中文分词算法(1)-基于词典: 机械分词(词典字符串匹配):前向最大匹配、后向最大匹配、双向最大匹配【OOV:基于现有词典,不能进行新词发现处理】
  10. Letter to a newborn son