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 相关文章推荐
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
python 链接和操作 memcache方法
Mar 04 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Python生成短uuid的方法实例详解
May 29 Python
Python OpenCV实现视频分帧
Jun 01 Python
Python二次规划和线性规划使用实例
Dec 09 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
你需要学会的8个Python列表技巧
Jun 24 Python
python怎么调用自己的函数
Jul 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
浅谈五大Python Web框架
2017/03/20 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python Tkinter版学生管理系统
2019/02/20 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
python中entry用法讲解
2020/12/04 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
大学生的自我鉴定范文
2014/01/21 职场文书
学校课外活动总结
2014/05/08 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
再谈python_tkinter弹出对话框创建
2022/03/20 Python