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 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
python实现顺序表的简单代码
Sep 28 Python
Windows下安装Scrapy
Oct 17 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
WxPython实现无边框界面
Nov 18 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
django ORM之values和annotate使用详解
May 19 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
Python入门学习之类的相关知识总结
May 25 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 #Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 #Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 #Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 #Python
为什么称python为胶水语言
Jun 16 #Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 #Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 #Python
You might like
php Try Catch异常测试
2009/03/01 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
mouse_on_title.js
2006/08/25 Javascript
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
python计算牛顿迭代多项式实例分析
2015/05/07 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
python实现百度语音识别api
2018/04/10 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
应届大学生自荐信
2013/12/05 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2015年服务员工作总结
2015/04/08 职场文书
暖春观后感
2015/06/08 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
安全教育主题班会教案
2015/08/12 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书