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验证码识别的实例详解
Sep 09 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python 列表推导式使用详解
Aug 29 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
Django使用rest_framework写出API
May 21 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
Python tkinter实现日期选择器
Feb 22 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设计模式之结构模式的深入解析
2013/06/13 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
Javascript的一种模块模式
2008/03/22 Javascript
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
python爬虫之百度API调用方法
2017/06/11 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
python学习基础之循环import及import过程
2018/04/22 Python
python 检查文件mime类型的方法
2018/12/08 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
python如何从文件读取数据及解析
2019/09/19 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
简述数组与指针的区别
2014/01/02 面试题
2016年9月份红领巾广播稿
2015/12/21 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
导游词之唐山景点
2019/12/18 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
解决Golang中goroutine执行速度的问题
2021/05/02 Golang