原文由wangle发表于TesterHome社区,点击原文链接可与作者直接交流。

一.开启邮箱 SMTP 服务

发送邮件需要使用 SMTP 服务器,常用的免费服务器有:163、126、qq 等邮箱。

QQ 邮箱配置方式如下:

1) 登录 qq 邮箱,选择【设置】-【账户】

2) 在 POP3/IMAP/SMAP/Exchage/CardDAV/CalDAV 服务中,找到 POP3/SMTP 服务和 IMAP/SMTP 服务,点击开启。

163 邮箱配置方式如下:

1) 注册 163 邮箱,登录后设置。

2)在新页面点击 “客户端授权密码”,勾选 “开启”,弹出新窗口填写手机验证码。

3) 填写授权码

4) 提示开启成功。

二、使用 python 发送邮件

使用 python 自带的模块:smptlib、email

import smtplib
from email.mime.text import MIMEText
from email.header import Header

1、发送普通的邮件

# 发送邮件的步骤
import smtplib
from email.mime.text import MIMEText     # 用来构造文本类型的邮件
from email.header import Header          # 用来构造邮件的头部
# 第一步:创建一个SMTP的对象
s = smtplib.SMTP()
# 第二步:连接到SMTP的服务器
host = 'smtp.163.com'    # 设置163邮箱服务器,端口为:25
port = 25
#  host = 'smtp.qq.com'  port = 465  # 设置qq邮箱服务器,端口为:465
s.connect(host,port)       # 连接服务器
# s.connect(host = 'smtp.163.com',port = 25)
# 第三步:登录SMTP服务器
mail_user = '18814726725@163.com'           # 163邮箱的用户名
mail_pass = 'password'                      # 注意:此处填写的是邮箱的SMTP服务器授权码
s.login(user=mail_user,password=mail_pass)
# 第四步:构建邮件内容
content = '使用python测试发送邮件'             # 构建邮件内容
msg = MIMEText(content,_charset='utf8')     # _charset 指定编码格式
msg['Subject'] = Header('测试报告','utf8')   # 邮件主题
msg['From'] = 'wl18814726725@163.com'       # 发件人邮箱,可传入列表,用于给多个人发送文件
msg['To'] = '1572533878@qq.com'             # 收件人# 第五步:发送邮件
s.sendmail(from_addr=msg['From'],to_addrs=msg['To'],msg=msg.as_string())     #将邮件内容转换为字符串

2、发送 HTML 格式邮件及附件

import smtplib
from email.mime.text import MIMEText     # 文本类型的邮件,用来构造邮件
from email.header import Header          # 用来构造邮件的头部
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart  # 用来构造附件# 发送邮件的步骤
# 第一步:创建一个SMTP的对象
s = smtplib.SMTP()
# 第二步:连接到SMTP的服务器
host = 'smtp.163.com'    # 设置163邮箱服务器,端口为:25
port = 25
#  host = 'smtp.qq.com'    # 设置qq邮箱服务器,端口为:465
s.connect(host,port)   # 连接服务器
# 第三步:登录SMTP服务器
mail_user = 'wl18814726725@163.com'     # 163邮箱的用户名
mail_pass = 'wl987654321'               # 注意:此处填写的是邮箱的SMTP服务器授权码
s.login(user=mail_user,password=mail_pass)# 构造文本邮件内容
content = '使用python测试发送邮件'             # 构建邮件内容
textcontent = MIMEText(content,_charset='utf8')        # _charset 指定编码格式
# 构造附件(二进制字节流形式)
part = MIMEApplication(open("report.html",'rb').read(),_subtype=None)
# part = MIMEApplication(open("report.html",'rb').read()) 需要查看_subtype=None 是否会引发异常
part.add_header('content-disposition', 'attachment', filename='report18.html')  # 对方收到邮件之后,附件在邮件中显示的名称
# 封装一封邮件
msg = MIMEMultipart()
# 加入文本内容
msg.attach(textcontent)
msg.attach(part)
# 发送邮件
msg['From'] = 'wl18814726725@163.com'       #发件人邮箱
msg['To'] = '1572533878@qq.com'             #收件人#第五步:发送邮件
s.sendmail(from_addr='wl18814726725@163.com',to_addrs='1572533878@qq.com',msg=msg.as_string())      # 将邮件内容转换为字符串

3、定义 send_email 函数

import smtplib
from email.mime.text import MIMEText     #文本类型的邮件,用来构造邮件
from email.header import Header          #用来构造邮件的头部
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart  #用来构造附件def send_email(filepath):""":param filepath:   #传入报告文件的路径:return:"""# 发送邮件的步骤# 第一步:创建一个SMTP的对象s = smtplib.SMTP()# 第二步:连接到SMTP的服务器host = 'smtp.163.com'    #设置163邮箱服务器,端口为:25port = 25#  host = 'smtp.qq.com'    #设置qq邮箱服务器,端口为:465s.connect(host,port)   #连接服务器# 第三步:登录SMTP服务器mail_user = 'wl18814726725@163.com'     #163邮箱的用户名mail_pass = 'wl987654321'               #注意:此处填写的是邮箱的SMTP服务器授权码s.login(user=mail_user,password=mail_pass)#构造文本邮件内容content = '使用python测试发送邮件'             #构建邮件内容textcontent = MIMEText(content,_charset='utf8')        #_charset 指定编码格式#构造附件(二进制字节流形式)part = MIMEApplication(open(filepath,'rb').read())part.add_header('content-disposition', 'attachment', filename='report988.html')  #对方收到邮件之后,附件在邮件中显示的名称# 封装一封邮件msg = MIMEMultipart()#加入附件和文本内容msg.attach(textcontent)msg.attach(part)#发送邮件msg['From'] = 'wl18814726725@163.com'       #发件人邮箱msg['To'] = '1572533878@qq.com'             #收件人#第五步:发送邮件s.sendmail(from_addr=msg['From'],to_addrs=msg['To'],msg=msg.as_string())      #将邮件内容转换为字符串send_email('report.html')

4、使用 python 发送邮件时常见错误:

错误 1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 。

我们使用 python 发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用 SMTP 服务发送邮件,新注册的 163 邮箱是默认不开启客户端授权的(对指定的邮箱大师客户端默认开启),因此登录总是被拒绝,解决办法(以 163 邮箱为例):进入 163 邮箱 - 设置 - 客户端授权密码 - 开启(授权码是用于登录第三方邮件客户端的专用密码)。上述有专门的设置方法。

错误 2:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') 。

以 163 邮箱为例,在开启 POP3/SMTP 服务,并开启客户端授权密码时会设置授权码,将这个授权码代替 smtplib.SMTP().login(user,password) 方法中的 password 即可。

错误 3:给多人发送邮件是,可能会出现 “AttributeError: 'list' object has no attribute 'encode'” 或者写了多个人,实际只给第一个人发了邮件等错误。

# 将所有的收件人邮箱写入到一个字符串中
msg['To'] = '1668010021@qq.com, 1572533878@qq.com, wangle@kyee.com.cn, 2685083419@qq.com'
# 发送邮件时,通过字符串函数split分割,分割后返回的每一个邮箱账号
s.sendmail(from_addr=msg['From'], to_addrs=msg['To'].split(','), msg=msg.as_string())

原文由wangle发表于TesterHome社区,点击原文链接可与作者直接交流。


今日份的知识已摄入~
想了解更多前沿测试开发技术:欢迎关注「第十届MTSC大会·上海」>>>
1个主会场+12大专场,大咖云集精英齐聚

常见邮箱开启 SMTP 服务及 Python 发送 email 详细说明相关推荐

  1. java 163邮件发送 ssl协议失败_163邮箱开启SMTP服务发送邮件出现535错误的解决方法...

    摘要: 用老的163邮箱可以直接设置SMTP发送邮件,使用新注册的却不行!折腾了几个小时后终于找到了方法,然后destoon就可以成功的发送邮件了..... 好久没有写关于destoon网站管理系统的 ...

  2. qq stmp php_sockets.dll 端口,QQ邮箱开启SMTP服务与SMTP信息(密码、服务器、端口) - 老王博客...

    无论是 WordPress 自动回复,还是写代码发送邮件,我们都需要用到 SMTP 服务,这时候我们就需要一个稳定靠谱的 SMTP 账号.老王一般喜欢使用 QQ 邮箱的 SMTP 服务,简单方便,反正 ...

  3. 163邮箱开启SMTP服务

    1.先注册一个163网易邮箱 2.注册成功后登陆该邮箱 3.在该邮箱中找到设置>POP3/SMTP/IMAP点击进入,如下图: 4.进入后在POP3/SMTP/IMAP页面勾选POP3/SMTP ...

  4. QQ邮箱开启SMTP服务的步骤

    首先要确保你的QQ邮箱已经要开启超过一个月.对于新开启的邮箱,腾讯是不开放这些功能的. 方法/步骤 首先点QQ头像旁边的信封符号进入邮箱. 当然你也可以使用 mail.qq.com进邮箱 进入邮箱后点 ...

  5. 如何开启邮箱的SMTP服务?

    各平台邮箱开启SMTP服务教程 QQ邮箱 点此进入 1.登录QQ邮箱后电击左上角设置 2.点击进入"帐户"页面 3.找到POP3/IMAP/SMTP/Exchange/CardDA ...

  6. 开启邮箱的SMTP服务获取授权码(QQ邮箱、163邮箱)

    一.问题描述 需要使用QQ邮箱的SMTP服务授权码. 二.问题分析 登陆网页版QQ邮箱进行开启. 三.操作步骤 3.1.登陆自己的QQ邮箱 QQ邮箱官网登陆地址QQ邮箱,为亿万用户提供高效稳定便捷的电 ...

  7. 开启qq邮箱的smtp服务

    有的时候我们需要再开发的项目中实现发送email的操作,这时就需要开启邮箱中的SMTP服务了,接下来为大家介绍一下怎么开启SMTP服务的,我是用qq邮箱举例,其他的都差不多.废话不多说,开始上干货. ...

  8. QQ邮箱开启SMTP方法如何授权

    转:https://jingyan.baidu.com/article/6079ad0eb14aaa28fe86db5a.html 随着网络上垃圾邮件的泛滥,越来越多的免费电子邮箱服务商对邮箱的安全策 ...

  9. 常见邮箱的SMTP设置

    常见邮箱的SMTP设置 推荐用 QQ免费 邮箱 SMTP地址是:smtp.qq.com 注意开启SMTP功能:web登录QQ邮箱,设置开启SMTP功能. ~~~~~~~~~~~~~~~~~~~~~~~ ...

最新文章

  1. 阿里安全新研究:给图片打“马赛克”就能骗过 AI 视觉系统
  2. python常用包下载_Python及其常用模块库下载及安装
  3. 反射应用--取得类的结构
  4. 三大运营商齐发力大数据
  5. python tkinter 弹窗_tkinter主窗口和子窗口同时弹出该怎么办?
  6. HDU 2841 Visible Trees(容斥)题解
  7. matlab2010a连接mysql_MATLAB2010a+OpenCV2.3.1+VS2010运行TLD
  8. ant压缩和解压缩工具类
  9. String.valueOf() 和 toString的区别
  10. 8g内存一般占用多少_手机的运行内存6g和8g有什么区别?内行人一语道破,别被骗了...
  11. 每天一道机器学习算法面试题目
  12. 各种loading加载中gif图标
  13. RN对接京东支付sdk(Android)
  14. 汉编国有资产综合管理系统简介
  15. matlab制作图片显示器,自己动手做一个雷达PPI显示器的动态效果图(附Matlab代码)...
  16. 64位Win7 服务器运行失败
  17. 淘宝直通车辅助工具系统使用教程
  18. ppt2016保存.html,PPT做完以后,按了保存就消失不见了,怎么找到原来的PPT?
  19. 中国移动电视显示android,中国移动电视机无线网络连接不上啥起因
  20. ROSCon2018国际会议讲座录像和讲稿PPT

热门文章

  1. 2022-06-05:不规则数独问题。 3*3填数独, 每一行要填1~3, 每一列要填1~3, 3*3的区域会拆分成不规则的三个集团区域, 每个集团区域3个格子, 每个集团的区域都一定是一个连在一起的
  2. Hive的基本知识与操作
  3. Java时区处理之夏令时,冬令时 - 美国的6个时区
  4. android解析doc,docx,xls,xlsx文件
  5. 如何选择服务器租用、服务器托管、云主机?
  6. springboot毕设项目医药连锁店管理系统k6w9t(java+VUE+Mybatis+Maven+Mysql)
  7. KPlayer无人直播
  8. div设置float后下一个div要换行的解决办法
  9. 斐波那契数列---兔子繁殖题
  10. Ta-lib学习笔记01--成交量指标