Python实现邮件发送踩过的坑(535, b'Error: authentication failed'+554, b'DT:SPM 163 smtp13)

想要通过Python实现邮件发送,可以先把任务分成2大块。
1. 准备工作,分3步:

	* 导入smtplib、email模块  
	* 配置第三方邮件服务器 (**注意:mail_pwd在配置的时候,是授权码,不是邮箱的登录密码** )
	* 配置邮件发送方、接收方、主题、内容、主体等信息
  1. 开始干活,分4步:

     * 建立和SMTP邮件服务器的连接
     * 完成身份认证
     * 发送邮件
     * 结束会话
    

例如: 如下代码实现了文本邮件的发送:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
导入发送邮件的相关模块:smtplib:负责发送邮件;  email: 负责构造邮件
MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展), 是一个互联网标准,它扩展了电子邮件标准,可以支持多种类型, MIMEText是文本消息)
'''
import smtplib
from email.mime.text import MIMEText
#from email.header import Header--------总报554,删除了

'''配置第三方 SMTP 服务'''
host="smtp.163.com" #设置服务器
mail_user="*******@163.com"#用户名
mail_pwd="*******"  #口令

'''配置发送方、接收方信息'''
sender = '*******@163.com'
receivers = '*******@qq.com'  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('内容部分为: 我打算用Python发一个邮件...', 'plain', 'utf-8')
message['From'] = sender   # 发送者
message['To'] = receivers   # 接收者
message['Subject'] = "主题为: 邮件的主题我还没想好呢~~"

try:
    smtpObj = smtplib.SMTP()   # 建立和SMTP邮件服务器的连接
    smtpObj.connect(host,25)    # 25 为 SMTP 端口号
    smtpObj.set_debuglevel(1)
    smtpObj.login(mail_user,mail_pwd)  #完成身份认证
    smtpObj.sendmail(sender, receivers, message.as_string())   #发送邮件
    print("邮件发送成功")
    smtpObj.quit()    #结束会话

except smtplib.SMTPException as e:
    print(e)

接收到的效果如下图:
在这里插入图片描述

  1. 需要注意的是,配置第三方服务的密码, 是smtp服务的授权码,不是邮箱的登录密码,如果设置的不是授权码,就会报“ 535, b’Error: authentication failed’ ”
    在这里插入图片描述

要想解决这个问题,就要将密码改为授权码,以163邮箱为例,授权码在设置->账号与邮箱中心->客户端授权密码中,进行开启。
在这里插入图片描述

  1. 此外, from email.header import Header后,容易出现发送报554的问题,索性去掉header,邮件发送成功了,具体为神马??,还有待研究。。。。。
    在这里插入图片描述
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值