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 相关文章推荐
详解Python中最难理解的点-装饰器
Apr 03 Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
python sort、sort_index方法代码实例
Mar 28 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Python结合Window计划任务监测邮件的示例代码
Aug 05 Python
django有哪些好处和优点
Sep 01 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 表单验证实现代码
2009/03/10 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python优先队列实现方法示例
2017/09/21 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
生产副总岗位职责
2013/11/28 职场文书
婚礼司仪主持词
2014/03/14 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
公司活动总结范文
2014/07/01 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
迎新生标语大全
2014/10/06 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
万能检讨书
2015/01/27 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
辩论会主持词
2015/07/03 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
解析Redis Cluster原理
2021/06/21 Redis