email模块用来构造邮件,smtplib模块用来发送邮件。

以QQ邮箱为例

想要在代码中使用QQ邮箱发送邮件,需要先在QQ邮箱-设置-账户中,开启SMTP服务,然后生成授权码。在进行验证账号时,用生成的授权码替换密码

发送纯文字的邮件,需要使用

#!/usr/bin/python3

import smtplib
from email.mime.text import MIMEText
from email.header import Header sender = '2474xxxx8@qq.com' # 发件人邮箱
password = 'ryhnx****fybifj' # 发件人邮箱密码
addressed_eamil = '247xxxx48@qq.com' # 收件人邮箱 def mail():
try:
msg = MIMEText('Python3邮件发送测试...','plain','utf-8')
msg['From'] = Header('发件人','utf-8')
msg['To'] = Header('收件人','utf-8')
msg['Subject'] = Header('测试发送邮件','utf-8') server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,一般端口是25
server.login(sender, password) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(sender, addressed_eamil, msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception:
print("邮件发送失败") mail()
#!/usr/bin/python3

import smtplib
from email.mime.text import MIMEText
from email.header import Header sender = '2474xxxx8@qq.com' # 发件人邮箱
password = 'ryhnx***fybifj' # 发件人邮箱密码
addressed_eamil = '247xxxx48@qq.com' # 收件人邮箱 def mail():
try:
msg = MIMEText('Python3邮件发送测试...','plain','utf-8')
msg['From'] = Header('发件人','utf-8')
msg['To'] = Header('收件人','utf-8')
msg['Subject'] = Header('测试发送邮件','utf-8') server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,一般端口是25
server.login(sender, password) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(sender, addressed_eamil, msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception:
print("邮件发送失败") mail()

上面一部分,是email模块用来构造邮件的,MiMEText()是邮件的正文:其中第一个是正文内容,第二个是文本格式,第三个是编码,From是用来设置发件人,To是用来设置收件人,Subject用来设置邮件主题。Header()只显示自己设置的字段,但是相应的邮件没有显示出来,可以换成formataddr()方法,看下面带附件的实例

下面一部分,是stmplib模块用来发送邮件的,第一行就用来设置需要使用的smtp服务地址和端口,第二行是来验证账户。第三行是发送邮件。如果邮件要发给多个人,addressed_email这个字段传入一个邮箱数组就可以了。

发送带附件的邮件

#!/usr/bin/python3

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart sender = '247412248@qq.com' # 发件人邮箱
password = 'ryhn***ybifj' # 发件人邮箱密码
addressed_eamil = '247412248@qq.com' # 收件人邮箱 def mail():
try:
# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = formataddr(['发件人姓名', sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
message['To'] = formataddr(['收件人姓名', addressed_eamil]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
message['Subject'] = "测试发送邮件" # 邮件的主题,也可以说是标题 # 邮件正文内容
message.attach(MIMEText('Python3邮件发送测试。。。', 'plain', 'utf-8')) # 构造附件1
att1 = MIMEText(open('D:/PycharmProjects/Vuiki/Common/测试.txt', 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream'
# filename是附件名,附件名称为中文时的写法
att1.add_header("Content-Disposition", "attachment", filename=("gbk", "", "测试.txt"))
message.attach(att1) # 构造附件2
att2 = MIMEText(open('D:/PycharmProjects/Vuiki/Common/test.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
#附件名称非中文时的写法
att2["Content-Disposition"] = 'attachment; filename="test.txt")'
message.attach(att2) server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,一般端口是25
server.login(sender, password) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(sender, addressed_eamil, message.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception:
print("邮件发送失败") mail()

当收件人需要显示多个的时候可以使用 ','.join(邮箱数组)

Python3学习笔记29-发送邮件的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  3. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  4. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  5. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  6. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

  7. python3学习笔记(9)_closure

    #python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...

  8. python3学习笔记(8)_sorted

    # python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...

  9. python3学习笔记(4)_function-参数

    #python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值 ...

  10. python3学习笔记(1)_string

    #python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...

随机推荐

  1. Hadoop序列化-流量汇总案例

    Hadoop序列化案例-流量汇总需求 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Hadoop序列化 1>.为什么要序列化 一般来说,“活的”对象只生存在内存里,关机断 ...

  2. Sqlserver中的索引

    一.什么是索引及索引的优缺点 1.1  索引的基本概念 数据库索引,是数据库管理系统中一个排序的数据结构,用来协助快速查询数据库表中数据. 简单理解索引就是一个排好顺序的目录,设置了索引就意味着进行了 ...

  3. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  4. vertica系列:时间相关函数

    -- * 注意: 本文的SQL是在 2017-09-14 测试的. 所以如果取当前日期, 结果为 2017-09-14* ------------------------------ 相关数据类型 - ...

  5. 清除 SQL Server Management Studio 服务器名称历史记录

    Ø  前言 在开发过程中,经常使用 SQL Server Management Studio 连接本地或远程 SQL Server 服务器,时间长了可能有些名称就不用了或者重复了,SQL Server ...

  6. CRLF Injection漏洞的利用与实例分析

    CRLF Injection很少遇见,这次被我逮住了.我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF ...

  7. 【python小练】0014题 和 0015 题

    第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { ":["张三",150,120,100], ":[& ...

  8. IHTMLDocument2类的使用

    class Program    {        static void Main(string[] args)        {            SHDocVw.ShellWindows s ...

  9. Mysql-5.7.20-winx64绿色版安装步骤

    Mysql-5.7.20-winx64绿色版安装步骤 1. 下载 mysql-5.7.20-winx64.zip 2.解压 解压到指定目录: C:\AppDate\mysql-5.7.20-winx6 ...

  10. 5.22 HTML 列表标签和表单标签

    1,ul无序列表 标签 ul:unordered list ,就是无序列表的意思. li:  listitem  列表项的意思.无序列表的每一项都是<li>. <!DOCTYPE h ...