Python实现SMTP邮件发送


Posted in Python onJune 16, 2020

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

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 smtp 协议中定义的格式。

实例

以下执行实例需要你本机已安装了支持 SMTP 的服务,如:sendmail。

import smtplib

from email.mime.text import MIMEText
from email.header import Header

sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8')   # 接受者

subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')

try:
  smtpObj = smtplib.SMTP('localhost')
  smtpObj.sendmail(sender, receiver, message.as_string())
  print("邮件发送成功")
except smtplib.SMTPException:
  print("Error: 无法发送邮件")

# 邮件发送成功

如果我们本机没有 sendmail 访问,也可以使用其他邮件服务商的 SMTP 访问(QQ、网易、Google等)。

import smtplib

from email.mime.text import MIMEText
from email.header import Header

#第三方SMTP服务
host="smtp.qq.com" #设置服务器
user="973708513"  #用户名
password="xxxxxx"  #口令

sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8')   # 接受者

subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')

try:
  smtpObj = smtplib.SMTP()
  smtpObj.connect(host, 465)  # 25 为 SMTP 端口号
  smtpObj.login(user,password)
  smtpObj.sendmail(sender, receiver, message.as_string())
  print("邮件发送成功")
except smtplib.SMTPException:
  print("Error: 无法发送邮件")

# 邮件发送成功

以上就是Python实现SMTP邮件发送的详细内容,更多关于Python SMTP的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
对python for 文件指定行读写操作详解
Dec 29 Python
Mac安装python3的方法步骤
Aug 09 Python
Python类中方法getitem和getattr详解
Aug 30 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
python语言中有算法吗
Jun 16 #Python
python爬虫可以爬什么
Jun 16 #Python
通过cmd进入python的步骤
Jun 16 #Python
解决Keras 自定义层时遇到版本的问题
Jun 16 #Python
Keras实现支持masking的Flatten层代码
Jun 16 #Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 #Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 #Python
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
vue.js表格分页示例
2016/10/18 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python 实现两个线程交替执行
2020/05/02 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python基于win32api实现键盘输入
2020/12/09 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
迎新晚会主持词
2014/03/24 职场文书
二手房购房意向书范本
2014/04/01 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
Python数据分析之pandas读取数据
2021/06/02 Python
Python实现机器学习算法的分类
2021/06/03 Python