原代码如下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header #要发送的服务器
smtpserver = 'smtp.126.com'
#要发送的邮箱用户名/密码
user = 'XXX@126.com'
password = 'XXX'
#发送的邮箱
sender = 'XXX@126.com'
#接收的邮箱
receiver = 'XXX@qq.com'
#发送邮箱主题
subject = 'test_mail' #编写HTML类型的邮件正文
msg = MIMEText('<html><h1>大佬好!</h1></html>','html','utf-8')
msg['Subject'] = Header(subject,'utf-8') #连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()

一、现象:

发送邮件时,运行时报错smtplib.SMTPDataError,如下图:

二、解决办法

①经网上查询得知:因为126邮箱中没有开启【授权码】,如下图所示应该开启:

②但是再次运行代码还是报错:smtplib.SMTPAuthenticationError,如下图,提示登陆失败:

原因是:代码中的密码应该改为授权密码即可。

③继续运行后,但是代码还是报错:smtplib.SMTPDataError:(554, b'DT:SPM 126 smtp4

报错原因是没有加上下面的代码:

#报错原因是因为“发件人和收件人参数没有进行定义
msg['from'] = 'test_bug@126.com'
msg['to'] = 'testyao@163.com'

加上之后,终于解决发送邮件失败的问题了。

完整代码如下:(因保密自行替换)

import smtplib
from email.mime.text import MIMEText
from email.header import Header #要发送的服务器
smtpserver = 'smtp.126.com'
#要发送的邮箱用户名/密码
user = 'XXX@126.com'
password = 'XXX'
#发送的邮箱
sender = 'XXX@126.com'
#接收的邮箱
receiver = 'XXX@qq.com'
#发送邮箱主题
subject = 'test_mail' #编写HTML类型的邮件正文
msg = MIMEText('<html><h1>大佬好!</h1></html>','html','utf-8')
msg['Subject'] = Header(subject,'utf-8')
msg['from'] = 'XXX@126.com'
msg['to'] = 'XXX@qq.com' #连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()

【selenium+Python unittest】之使用smtplib发送邮件错误:smtplib.SMTPDataError:(554)、smtplib.SMTPAuthenticationError(例:126邮箱)的更多相关文章

  1. selenium+python+unittest实现自动化测试(入门篇)

    本文主要讲解关于selenium自动化测试框架的入门知识点,教大家如何搭建selenium自动化测试环境,如何用selenium+python+unittest实现web页面的自动化测试,先来看看se ...

  2. smtplib.SMTPDataError: (554, b'DT:SPM 126 smtp

    报错信息 smtplib.SMTPDataError: (554, b'DT:SPM 126 smtp7,DsmowAA3uguL7e1cyvkyFw--.22553S3 1559096715,ple ...

  3. selenium+python unittest实践过程之问题杂集

    1.列表选择项后直接获取文本内容获取不到,应该获取选择后显示的button的值 2.取值后的值带有空格,可以使用.strip()删除前后空格,以便断言 3.取值后有些值需要对类型进行转换才能断言成功 ...

  4. selenium+python+unittest:一个类中只执行一次setUpClass和tearDownClass里面的内容(可解决重复打开浏览器和关闭浏览器,或重复登录等问题)

    unittest框架是python自带的,所以直接import unittest即可,定义测试类时,父类是unittest.TestCase. 可实现执行测试前置条件.测试后置条件,对比预期结果和实际 ...

  5. 【selenium+Python unittest】之发送带中文附件的邮箱

    完整原码如下: import smtplib from email.mime.text import MIMEText #from email.header import Header from em ...

  6. 【Selenium】【BugList10】smtp发送邮件问题汇总:550/535/554

    [场景] 通过126邮箱向QQ邮箱发送HTML格式邮件 [代码1] from email.mime.text import MIMEText from email.header import Head ...

  7. python使用smtplib发送邮件

    python要实现发送邮件的功能,需要使用smtplib库. 1. 过程大致如下: 1. 建立和SMTP邮件服务器的连接 # 默认端口25 smtp = smtplib.SMTP(host, port ...

  8. python selenium 使用unittest 示例

    python selenium 使用unittest 示例 并等待某个元素示例 from selenium.webdriver.support.ui import WebDriverWait from ...

  9. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

随机推荐

  1. [LeetCode] Largest Number 排序

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  2. android基本控件学习-----TextView

    一.TextView的讲解 <实例一> <?xml version="1.0" encoding="utf-8"?> <Linea ...

  3. my.ini配置详解

    Mysql my.ini 配置文件详解 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM ...

  4. (11)centos之vim使用

    ZZ 保存并退出 :x 保存并退出 :q 不保存退出

  5. CRB and Candies LCM 性质

    题目 CRB and Candies 题意 \[ \text{给定正整数N,求} LCM \lbrace C \left(N , 0 \right),C\left(N , 1 \right),..., ...

  6. 伪全栈工程师做的有点简陋的ui设计

    站酷:http://www.zcool.com.cn/work/ZMjEwMDIxMDA=.html 这个app 叫自我时间管理  是一个 工具  管理自己开会 购物 健身 记账等 的提醒与管理,还可 ...

  7. codevs——2853 方格游戏(棋盘DP)

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解  题目描述 Description 菜菜看到了一个游戏,叫做方格游戏~ 游戏规则是这样的: 在一个n*n的 ...

  8. Network | CIDR

    无类别(现在) 无类别域间路由(Classless Inter-Domain Routing.CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法. CI ...

  9. commons-lang3-StringUtils

    字符串工具类   abbreviate(String str, int maxWidth) 返回一个指定长度加省略号的字符串,maxWidth必须大于3 StringUtils.abbreviate( ...

  10. java中的堆、栈和常量池简介

    一.它们各自存放的数据类型: 堆:存放所有new出来的对象. 栈:存放基本类型的变量数据和对象的应用,对象(new出来的对象)本身并不存在栈中,而是存放在堆中或者常量池中(字符串常量对象存放在常量池中 ...