发送邮件这个功能非常实用,比如你写了一个爬虫,可以通过邮件来接收程序异常或者任务完成的通知,再比如你搭了一个网站,别人只需留下他的邮箱,你就可以自动给他发送邮件。

总之我觉得邮件通知非常适合那些处理批量、大量任务,你可以不用守在电脑前等待处理结果,在程序里配置好邮件通知后,只需留意邮箱通知就好了。

下面我们一起来看看如何使用 python 来实现邮件发送,邮件一般分为纯文本邮件、html 邮件、以及带附件邮件,今天我们使用 python 来分别实现这三种邮件的发送。

在 python 实现发送邮件需要两个模块,分别是 smtplib 和 email,这两个模块都是内置的,不需要自己安装,直接 import 导入即可。

email 主要是用来构建邮件的,比如邮件收发人、邮件标题、邮件正文以及附件啥的,smtplib 则是用来发送邮件的。

这里我们使用 qq 邮箱来作为发件邮箱,在使用前,需要简单的配置下 qq 邮箱。

打开 qq 邮箱,依次找到 设置 -> 账户,然后检查 POP3/SMTP 服 务是否开启。

如果没开启则开启,根据提示开启之后我们需要获取授权码,这个授权码下面我们会要用到的,这一步只要获取到授权码就行了。

我们先来实现一个简单的纯文本邮件发送,我这里只把一些关键的代码解释一下,文章最后面再附上完整的源码。

  • 纯文本邮件

首先就是使用 email 模块构建邮件,plain 即代表文本邮件,邮件构建完后,再使用 smtplib 发送邮件。

#构建纯文本邮件
from email.mime.text import MIMEText
from email.header import Header
msg = MIMEText('我是邮件正文...', 'plain', 'utf-8') # plain 表示纯文本邮件
msg['From'] = "这里是发件者邮箱"
msg['To'] = "这里是收件者邮箱"
msg['Subject'] = Header("我是邮件的标题", 'utf-8') #邮件标题#使用smtplib模块发送邮件
email_client = smtplib.SMTP("smtp.qq.com")
email_client.login("这里是发件者邮箱", "这里就是上面提到获取到的授权码")
email_client.sendmail("这里是发件者邮箱", "这里是收件件者邮箱", msg.as_string())
email_client.quit()

发送邮件的时候有两个需要注意的地方,一个是 smtplib.SMTP 的邮件服务器设置。

这里我们用的 qq 邮箱作为发件邮箱,所以设置为 http://smtp.qq.com,如果是其他邮箱如网易邮箱,则需要设置为 http://smtp.163.com。

再一个需要注意的就是 login 方法了,这个登录方法里的第二个参数是指上面提到的授权码,并不是你发件邮箱的登录密码。

  • html 邮件

html 邮件主要是可以给邮件内容定义更丰富的样式,而且可以很方便的插入链接。html 邮件和纯文本邮件大同小异,把完整的 html 内容作为文本内容就行,再把 plain 改为 html 类型即可。

#构建html邮件
content = '<html><body><h3>Hello,这是一封 html 邮件,点击链接可以去看我的博客哈。</h3>' + '<p><a href="www.weatherfood.com">谭某人的博客</a></p>' + '</body></html>'
puretext = MIMEText(content, 'html', 'utf-8')

  • 附件邮件

附件邮件稍微麻烦一些,在构建邮件对象的时候,就需要声明构建一个附件邮件对象,msg = MIMEMultipart(),然后再添加 MIMEText 作为邮件正文,最后再把 MIMEApplication 作为附件加入即可。

  • 完整源码

最后我再附上一份完整的带图片附件且正文为 html 的邮件发送源码,注意把源码中的发件邮箱改成你自己的邮箱,并获取发件邮箱的授权码。

# coding=utf-8import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart  #邮件发送函数
#SMTPHost 邮件服务器
#fromAccount 发件邮箱
#fromPasswd 发件邮件授权码,注意并不是邮箱登录密码
#toAccount 收件邮箱
#subject 邮件标题
#content 邮件正文def sendMail(SMTPHost, fromAccount, fromPasswd, toAccount, subject, content):    #构建邮件msg = MIMEMultipart()msg['Subject'] = Header(subject, 'utf-8')msg['From'] = fromAccountmsg['To'] = toAccountcontent = '<html><body><h3>Hello,这是一封 html 邮件,点击链接可以去看我的博客哈。</h3>' + '<p><a href="www.weatherfood.com">谭某人的博客</a></p>' + '</body></html>'puretext = MIMEText(content, 'html', 'utf-8')msg.attach(puretext)# 附件xlsxpart = MIMEApplication(open('tim.jpg', 'rb').read()) #这里填写你自己目录下的附件文件xlsxpart.add_header('Content-Disposition', 'attachment', filename='tim.jpg')msg.attach(xlsxpart)#使用smtplib模块发送邮件email_client = smtplib.SMTP(SMTPHost)email_client.login(fromAccount, fromPasswd)email_client.sendmail(fromAccount, toAccount, msg.as_string())email_client.quit()#主函数
if __name__ == '__main__':sendMail('smtp.qq.com','********@qq.com',#你的邮箱'**********',#授权码'playactors@163.com','很开心你来看我的文章了,欢迎关注哦。','文章中有疑问的地方,欢迎留言与我联系哈,感谢你的支持!')

有问题欢迎在下面留言交流,也欢迎关注,如果觉得对你有帮助就点个赞吧,感谢支持。

php 邮件发送是html 没样式_使用python发送邮件相关推荐

  1. python判断邮件发送成功_(原创)python发送邮件

    这段时间一直在学习flask框架,看到flask扩展中有一个mail插件,所以今天就给大家演示如果发邮件. 首先我注册了一个163邮箱,需要开启smtp功能,因为咱们python发送邮件经过的是smt ...

  2. php邮件发送tp,在Thinkphp3.2 中使用PHPMailer 发送邮件

    phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考. phpmailer发送邮件功能很强大,今天真 ...

  3. 大聪明教你学Java | 实现邮件发送(以163邮箱向QQ邮箱发送邮件为例)

    前言 电子邮件的应用非常广泛,常见的如在某网站注册了一个账户,自动发送一封激活邮件:通过邮件找回密码:发送活动信息等等.很显然,这些过程不能通过人工来操作(打开浏览器.打开邮箱.创建邮件.发送邮件), ...

  4. java 163邮件发送 ssl协议失败_163邮箱开启SMTP服务发送邮件出现535错误的解决方法...

    摘要: 用老的163邮箱可以直接设置SMTP发送邮件,使用新注册的却不行!折腾了几个小时后终于找到了方法,然后destoon就可以成功的发送邮件了..... 好久没有写关于destoon网站管理系统的 ...

  5. 用python发邮件为什么接收不了_使用python发送邮件和接收邮件

    发邮件是大家工作中最常用到的.今天来看一下怎么用python来发送和接收邮件. python实现发送和接收邮件功能主要用到poplib和smtplib模块. poplib用于接收邮件,而smtplib ...

  6. flask-mail异步发送邮件_使用 python 发送邮件

    使用 python 发送邮件,这个也没啥讲的,分享三种方式发送邮件,最后一种三行代码就可以发送邮件,是不是很爽啊,话不多说,直接上代码 第一种:正常发送邮件,也就是同步发送邮件 #!/usr/bin/ ...

  7. python 发送邮件_利用Python 发送邮件

    原标题:利用Python 发送邮件 概要 我们都知道SMTP(简单邮件传输协议),是一组用于从原地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式.SMTP规定电子邮件应该如何格式化.如何加密, ...

  8. vant按需引入没样式_传统背景墙早看腻了,不如走一圈石膏线简单好看,8种样式随意选...

    装修最忌讳的就是千篇一律,再好看的设计,也迟早会看腻味的.是时候告别传统电视墙做法,换成走一圈的石膏线,简单.省钱又好看.当然想要石膏线固定在墙面上不土,自然不能自己想怎么样就怎么样的,具体的做法我来 ...

  9. python显示邮件发送成功失败_python stmp module 163邮箱发送邮件不成功

    问 题 http://blog.csdn.net/lucahan/... 我照着这个的教程试了下,就卡在connect服务器上,一直连不上,我上网没有问题. 求教是什么原因! 解决方案 因为这很多教程 ...

最新文章

  1. okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...
  2. react html编辑器,react项目中使用富文本编辑器
  3. class CT where T : new() 泛型类约束
  4. 【vue开发问题-解决方法】(八)利用axios拦截器实现elementUI中加载动画,控制加载区域
  5. Newton Raphson算法
  6. 中职生计算机应用试卷分析,中职计算机应用基础学业水平测试问题的相关分析...
  7. 【人工智能】马尔可夫链模型是什么?
  8. ParkingEE智能化停车服务平台
  9. Sue的小球 [费用提前计算]
  10. 详细解析STM32的时钟系统
  11. HttpCore和HttpClient
  12. 【集创赛】arm杯一等奖作品:智能BLDC驱动系统
  13. bitset(位图)原理与用法
  14. 3 photolemur 样式下载_Photolemur 3
  15. 技术债务研究综述X4
  16. 人生不是故事,人生是世故,摸爬滚打才不会辜负功名尘土
  17. 实时人脸性别和年龄识别
  18. 两万字摘录计算机博士生涯规划
  19. [软件点评]猎豹浏览器使用初感
  20. 中小管理者必看!如何快速拉通IT部门与业务部门的数字化业务需求

热门文章

  1. 不用math type解决word公式上浮问题
  2. android webview fragment,android studio中Fragment使用webview返回上一頁的問題
  3. ios请求头解决参数中文乱码_花了一天时间就解决了一个的请求头传参参数格式bug...
  4. ubuntu16.04编译安装c++ opencv与vscode配置debug
  5. Java8 Stream详解~ 提取/组合
  6. Java加密与解密的艺术~数字签名~模型分析
  7. JNDI配置原理详解
  8. 增大表名最大长度_风电叶片材料的发展变迁史,及风力发电机叶片长度发展历程...
  9. html里table的scope,HTML表格的运用
  10. mysql用户添加_MySQL用户添加