Python SMTP发送邮件

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
611
文章
12
评论
2017年10月28日20:30:51 评论

一、概述

python 提供了两个包来提供SMTP 邮件服务支持:smtplib和 email,前者系统内置,后者需要通过pip 或者其他方式手动安装。其中smtplib 提供邮件发送功能,email负责邮件内容的构造。

二、smtplib库介绍

2.1 创建一个smtp连接对象

或者

2.2 登录到smtp服务器

2.3 发送邮件

发件人地址是一个列表,可以有多个收件人。

2.4 关闭邮箱对象

三、email库介绍

2.1 构造一封邮件

第一个参数是邮件的正文内容,第二个参数是文件的类型,plain 表示普通文本,第三个参数是编码格式,默认ascii编码。

如果需要发送html格式的邮件,需要把第二个参数设置为html,然后正文部分放传入网页的内容 。

2.2 设置收、发件人以及邮件主题

如果含有中文,需要这样设置:

2.3 添加附件

四、一封最简单的SMTP邮件

准备好一个SMTP服务器和邮箱帐号(没有的话可以利用163、QQ等第三方公司的),发送一封最简单的邮件:

如果各项参数没有设置错误的话邮件就会发送成功了,但是由于我们没有填写任何其他信息,邮件的收件人和主题都是空的:

Python SMTP发送邮件

五、使用QQ邮箱发送邮件

1. 获取QQ邮箱授权码

由于QQ邮箱的设置,登录第三方邮箱时不能直接使用QQ密码登录,需要申请一个授权码用来给第三方客户端登陆。

授权码的获取:

Python SMTP发送邮件

Python SMTP发送邮件

Python SMTP发送邮件 拿到授权码后,就可以使用qq邮箱帐号和授权码在第三方客户端登录了。

2. 使用QQ邮箱发送邮件

使用上面的代码,把所有的邮箱信息替换成QQ邮箱的,然后发送邮件。

结果会报错:

出现这个问题的原因是QQ邮箱使用了SSL 加密传输,不能直接使用上面的方式发送邮件,要把smtp对象的创建方式改为:

现在对上面的代码进行修改,添加上发件人和收件人信息,并修改SMTP端口为465

发送成功:

Python SMTP发送邮件

3. 发送html格式邮件并携带附件

先创建一个test.txt文件,写入数据HelloWorld,在邮件中把它发出去。

邮件:

 

Python SMTP发送邮件

 

 

历史上的今天
十月
28
马谦马谦马谦
  • 本文由 发表于 2017年10月28日20:30:51
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/python/python-smtp-send-mail.html
Redis小案例(一):实现网站访问频率限制 Redis

Redis小案例(一):实现网站访问频率限制

网站中经常需要用到网站限流,例如限制用户恶意爬虫获取网页信息以及在网站访问流量大时限制访问频率等等,这里使用redis做一个简单的网站登录限制案例。 一、使用EXPIRE进行访问频率限制 逻辑:用户登...
python redis-py模块用法 Python

python redis-py模块用法

一、安装 redis中操作redis的模块为redis-py,使用pip install redis或者easy_install redis安装即可,也可以进去https://pypi.python....
python使用_winreg模块操作注册表 Python

python使用_winreg模块操作注册表

一、基本操作 python中的_winreg模块提供了对于windows平台下注册表的一些基本操作,包括对键值的枚举以及增加删除键等,以`HKEY_CURRENT_USERConsole`为例: Op...
python获取命令行参数 Python

python获取命令行参数

一、概述 python获取命令行参数有两种方法,一种是使用sys模块直接获取到所有的命令行参数,另一种是使用getopt来获取指定标记的参数,后者更灵活一点,但是也复杂一点。 二、sys模块获取参数 ...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: