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 base64 decode incorrect padding错误解决方法
Jan 08 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
python基础知识小结之集合
Nov 25 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
python 计算文件的md5值实例
Jan 13 Python
python如何实现一个刷网页小程序
Nov 27 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
django 中QuerySet特性功能详解
Jul 25 Python
详解python pandas 分组统计的方法
Jul 30 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
python查找第k小元素代码分享
2013/12/18 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python 字段拆分详解
2019/12/17 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
python openCV自制绘画板
2020/10/27 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
小学生家长评语大全
2014/02/10 职场文书
渡河少年教学反思
2014/02/12 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
党建工作先进材料
2014/05/02 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
端午节寄语2015
2015/03/23 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python