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之用while来循环
Oct 02 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
Python制作动态字符图的实例
Jan 27 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
详解python:time模块用法
Mar 25 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
微信小程序python用户认证的实现
Jul 29 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python制作英语翻译小工具代码实例
Sep 09 Python
Pytorch之contiguous的用法
Dec 31 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
在Python中实现字典反转案例
Dec 05 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网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
php中namespace及use用法分析
2016/12/06 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
windows下python和pip安装教程
2018/05/25 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python 3 判断2个字典相同
2019/08/06 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
python suds访问webservice服务实现
2020/06/26 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
英国电气世界:Electrical World
2019/09/08 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
人力资源管理毕业求职信
2014/08/05 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
医学会议开幕词
2016/03/03 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
Python中的min及返回最小值索引的操作
2021/05/10 Python
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python