Web自动化【7】——python 使用QQ邮箱发送邮件,端口号25,465,578,的区别,及错误码535,530的解决办法

先上代码,方式一二三分别对应使用smtp不同端口号发送邮件的实现方式。
(1)端口号25:明文传输
(2)端口号456,基于SSL协议
(3)端口号578,基于STARTTLS协议
所以实现当时会有所不同,根据不同报错信息也可以看出来。

方式一:端口号25,明文传输

from email.mime.text import MIMEText
from email.header import Header
import smtplib
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授权码'  # 开启
receiver = '****@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>today is Friday!</h1></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
smtp = smtplib.SMTP()
smtp.connect(server, 25)
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())
smtp.quit()

方式二:端口号456,基于SSL协议

from email.mime.text import MIMEText
from email.header import Header
import smtplib
# xpvwyhxnsrsrbabi
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授权码'  # 开启
receiver = '***@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>今天不加班!</hi></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
smtp = smtplib.SMTP_SSL(server, 465) 
 # 465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())

方式三:端口号578,基于STARTTLS协议的 属于TLS通讯协议

from email.mime.text import MIMEText
from email.header import Header
import smtplib
# xpvwyhxnsrsrbabi
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授权码'  # 开启
receiver = '****@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>快下班啦!</hi></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
# 方式三:587端口是STARTTLS协议的 属于TLS通讯协议,命令执行后对原文进行保护
smtp = smtplib.SMTP(server, 587)
smtp.set_debuglevel(0) # 是否为调试模式。>1即调试模式,表示输出交互调试信息
smtp.starttls()
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())
smtp.quit()

列举一些常会遇到的报错:

常见报错一:535
报错535原因就是未将POP3/SMTP服务开启,并且第三方登录需要服务开启获取的授权码。

报错信息:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
解决办法:
其中报错有个链接:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
根据链接步骤,打开qq邮箱,点击设置->账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启IMAP/SMTP服务,然后根据要求使用手机发送到指定号码,获取授权码,
这个授权码就是你接下来登录要的密码,配置完成。
注意:此时需要用授权码代替邮箱本身的Password。
在这里插入图片描述

常见报错二:530
错误原因: 需要一个安全的连接,例如SSL,smtp = smtplib.SMTP()。这个就是上面对应的方式二,不能使用 因此接下来我们会使用SSL的方式去登录,但是已就需要打开qq邮箱,点击设置->账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启IMAP/SMTP服务,然后根据要求使用手机发送到指定号码,获取授权码,这个授权码就是接下来登录要的密码,配置完成。

在这里插入图片描述

常见报错三:530 smtplib.SMTPAuthenticationError: (530, b’Must issue a STARTTLS command first.’)
原因是端口问题,不同端口需要不同的实现方式]
(https://blog.csdn.net/qq_23864697/article/details/80183854)

在这里插入图片描述

另外具体25,587,465端口区别见以下博文:https://blog.csdn.net/qq_23864697/article/details/80183854
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值