import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage account='9xxxx65@qq.com' #发件人
pwd = '*******' #第三方授权码,需登录qq mail web页,开通设置。
to = ['xxxxx@qq.com','xxxx@qq.com','xxxx@qq.com'] # 发送给多个收件人
host='smtp.qq.com' #主机
atta_path = r'C:\Users\Administrator\Desktop\testdata.txt' #附件路径与名称
name='要展示的文件名.txt' #附件显示的名称
img_path = r'C:\Users\Administrator\Desktop\dog.jpg' #显示在正文中的图片 # 这是正文显示部分,其中img标签中的src的cid:0,这个0与下文的content-ID对应。 content='''
<html><body><h3>
Project:</h3> <p>mobile test</p>
<h3>Tester:</h3> <p>fish</p>
<h3>Date:</h3> <p>2019/12/12</p>
<h3>Result:</h3> <p>Pass</p>
<p>For morn details,you can check <a href= 'https://www.baidu.com'>Test Result</a></p>
<img src='cid:0' alt = 'picture'>
</body></html>
'''
def sendmail(): ret = True
try:
msg = MIMEMultipart()
msg['Subject'] = 'Test'
msg['From'] = account
msg['To'] = ';'.join(to) #将图片显示在邮件正文中
fp=open(img_path,'rb')
img= MIMEImage(fp.read())
img.add_header('Content-ID', '')
msg.attach(img) #邮件中显示正文
part_text = MIMEText(content,'html','UTF-8')
msg.attach(part_text) #这是附件部分,不同类型的附件,只需修改名称、位置、要显示的名字
part_att = MIMEApplication(open(atta_path,'rb').read())
part_att.add_header('Content-Disposition', 'attachment', filename=name)
msg.attach(part_att) #实例化一个SMTP的对象,然后登录、发送邮件
s = smtplib.SMTP(host,timeout= 30)
s.login(account,pwd)
s.sendmail(account,to,msg.as_string())
s.close()
except Exception as e:
ret = False
resaon = str(e)
return ret ret = sendmail() if ret:
print('send successfully')
else:
print('Error: send failed: ',reason)

如上的代码,可实现一个简单的邮件自动发送,且不会显示在垃圾箱中。

Python自动发送邮件--smtplib模块的更多相关文章

  1. Python自动发送邮件-smtplib和email库

    ''' 一.先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com 三. ...

  2. 用Python自动发送邮件

    用Python自动发送邮件     最近需要在服务器上处理一些耗时比较长的任务,因此想到利用python写一个自动发送邮件的脚本,在任务执行完毕后发送邮件通知我.以下代码以163邮箱为例: 开通163 ...

  3. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  4. python:利用smtplib模块发送邮件

    自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 参考代码:send_mail.py 一.python对 ...

  5. python:利用smtplib模块发送邮件详解

    自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 首先我们要做: 进入163邮箱,点击设置中的pop3/ ...

  6. python之使用smtplib模块发送邮件

    # 使用smtplib模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Heade ...

  7. python☞自动发送邮件

    一.SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 二.smtplib ...

  8. Python 自动发送邮件

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...

  9. Appium+python 自动发送邮件(1)(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...

随机推荐

  1. AQS系列(六)- Semaphore的使用及原理

    前言 Semaphore也是JUC包中一个用于并发控制的工具类,举个常用场景的例子:有三台电脑五个人,每个人都要用电脑注册一个自己的账户,这时最开始只能同时有三个人操作电脑注册账户,这三个人中有人操作 ...

  2. CentOS 磁盘在线扩容

    场景介绍: 操作系统Centos7.x 系统有一块vdisk,容量为20G,共分为3个区(swap和boot分区为标准分区xfs文件系统,根分区为LVM分区,xfs文件系统) 业务需求:在VM系统不关 ...

  3. Win32 API编程——前言

    一丶什么是Win32 API? 微软为了保护操作系统的安全性和稳定性,把系统分为内核层和用户层(内核层的代码只能在当CPU的特权级为R0状态下执行,用户层的代码在CPU特权级为R0和R3都能执行),w ...

  4. 传统js和jsx与ts和tsx的区别

    一.从定义文件格式方面说 1.传统的开发模式可以定义js文件或者jsx文件2.利用ts开发定义的文件格式tsx二.定义state的状态来说 1.传统的方式直接在构造函数中使用 constructor( ...

  5. Spring Cloud Finchley.SR1 版本的坑:placeholer占位符无法解析!

    接入nacos 之后,想把所有的配置丢上去. 启动程序是: @EnableDiscoveryClient @RestController @ComponentScan(basePackages = { ...

  6. MySQL数据库基础笔记

    数据库 数据库就是存储和管理数据的仓库,用户可以对数据库中的数据进行增删改查等操作. 数据库的分类 关系型数据库(Oracle.MySQL.SQLite等) 非关系型数据库(Redis.MongoDB ...

  7. spinand之data buffer

    data buffer简介 spinand一般会有一个内置的data buffer. 以W25N01GV为例,一个page是2048bytes外加64bytes的spare数据,其data buffe ...

  8. Kubernetes行业调研报告:多集群、多云部署成企业首选策略

    新兴的多集群.多云部署成为首选的企业策略,而边缘部署则呈上升趋势 2019年11月5日,业界采用最广泛的Kubernetes管理平台创造者Rancher Labs(以下简称Rancher)发布了首份调 ...

  9. Apply Grouping to List View Data 将分组应用于列表视图数据

    This lesson will teach you how to apply grouping to List View data. For this purpose, you will group ...

  10. Mybatis的小技巧

    一.使用resultMap字段关联对象属性太麻烦 eg:过于复杂,类似这种结果集转换的,只需要在配置文件中开启自动转换进行了,无需再手动写了很麻烦 替换办法:开启骆驼命名法进行匹配就ok了,实体类字段 ...