折腾:
【已解决】python中smtp用qq发送邮件出错:smtplib.SMTPAuthenticationError 530 Error A secure connection is required
期间,再去试试587,结果至少可以继续运行了:
结果:
smtpObj.login(sender, senderPassword)
File “/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py”, line 622, in login
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (530, ‘Must issue a STARTTLS command first.’)
python smtp qq邮箱
How to send an email with Gmail as provider using Python? – Stack Overflow
Python smtplib使用实例:网易邮箱向QQ邮箱发送邮件-香飘叶子-51CTO博客
Python用QQ邮箱发送邮件时授权码问题 – CSDN博客
Python & Email,附上用 Python 发送 QQ 邮箱邮件的代码
使用QQ邮箱发送email(Python) – leetao94 – 博客园
看到有:
s = smtplib.SMTP_SSL(“smtp.qq.com“, 465)
所以去搜:
python smtp SMTP ssl
20.12. smtplib — SMTP protocol client — Python 2.7.14 documentation
python模块之smtplib: 用python发送SSL/TLS安全邮件 – CSDN博客
果然是有单独的:
smtplib.SMTP_SSL
所以代码改为:
if useSSL:
smtpObj = smtplib.SMTP_SSL(smtpServer, smtpPort)
else:
smtpObj = smtplib.SMTP(smtpServer, smtpPort)
然后就发送成了,开了debug的smtp的log是:
send: ‘ehlo licrifandeMacBook-Pro.local\r\n’
reply: ‘250-smtp.qq.com\r\n’
reply: ‘250-PIPELINING\r\n’
reply: ‘250-SIZE 73400320\r\n’
reply: ‘250-AUTH LOGIN PLAIN\r\n’
reply: ‘250-AUTH=LOGIN\r\n’
reply: ‘250-MAILCOMPRESS\r\n’
reply: ‘250 8BITMIME\r\n’
reply: retcode (250); Msg: smtp.qq.com
PIPELINING
SIZE 73400320
AUTH LOGIN PLAIN
AUTH=LOGIN
MAILCOMPRESS
8BITMIME
send: ‘AUTH PLAIN ADg0NDgzNDIzQHFxLmNvbQB3d2dsY2RyaHR4YWhiaGdq\r\n’
reply: ‘235 Authentication successful\r\n’
reply: retcode (235); Msg: Authentication successful
send: u’mail FROM:<[email protected]> size=1000\r\n’
reply: ‘250 Ok\r\n’
reply: retcode (250); Msg: Ok
send: u’rcpt TO:<[email protected]>\r\n’
reply: ‘250 Ok\r\n’
reply: retcode (250); Msg: Ok
send: u’rcpt TO:<[email protected]>\r\n’
reply: ‘250 Ok\r\n’
reply: retcode (250); Msg: Ok
send: ‘data\r\n’
reply: ‘354 End data with <CR><LF>.<CR><LF>\r\n’
reply: retcode (354); Msg: End data with <CR><LF>.<CR><LF>
data: (354, ‘End data with <CR><LF>.<CR><LF>’)
send: ‘Content-Type: text/html; charset=”utf-8″\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: base64\r\nFrom: =?utf-8?b?56S86LKMUVEgPDg0NDgzNDIzQHFxLmNvbT4=?=\r\nTo: =?utf-8?b?PT91dGYtOD9xP0NyaWZhbjIwMDM/PSA8Y3JpZmFuMjAwM0AxNjMuY29tPiwg?=\r\n =?utf-8?b?PT91dGYtOD9iPzVZV0w1NUdlNklxcz89IDxhZG1pbkBjcmlmYW4uY29tPg==?=\r\nSubject: =?utf-8?b?W+S7t+agvOmrmF0gdGl0bGUgaW5jbHVl5Lit5paHIERlbGwgWFBTIDEzIFhQ?=\r\n =?utf-8?q?S_9360_Laptop_PC?=\r\n\r\nCjxodG1sPgogICAgPGJvZHk+CiAgICAgICAgPGgxPlvku7fmoLzpq5hdIHRpdGxlIGluY2x1ZeS4\r\nreaWhyBEZWxsIFhQUyAxMyBYUFMgOTM2MCBMYXB0b3AgUEM8L2gxPgogICAgICAgIDxwPk5vdCBi\r\ndXkgPGEgaHJlZj0iaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9zdG9yZS9kL2RlbGwt\r\neHBzLTEzLXhwcy05MzYwLWxhcHRvcC1wYy84cTE3Mzg0Z3J6MzcvR1Y1RD9hY3RpdmV0YWI9cGl2\r\nb3QlMjUzYW92ZXJ2aWV3dGFiIj50aXRsZSBpbmNsdWXkuK3mlocgRGVsbCBYUFMgMTMgWFBTIDkz\r\nNjAgTGFwdG9wIFBDPC9hPiBmb3IgY3VycmVudCBwcmljZSA8Yj4kNjk5LjAwPC9iPiAmZ3Q7IGV4\r\ncGVjdGVkIHByaWNlIDxiPiQ1OTkuMDA8L2I+PC9wPgogICAgICAgIDxwPlNvIHNhdmUgZm9yIGxh\r\ndGVyIHByb2Nlc3M8L3A+CiAgICA8L2JvZHk+CjwvaHRtbD4K\r\n.\r\n’
reply: ‘250 Ok: queued as \r\n’
reply: retcode (250); Msg: Ok: queued as
data: (250, ‘Ok: queued as’)
对应的message为:
Content-Type: text/html; charset=”utf-8″
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: =?utf-8?b?56S86LKMUVEgPDg0NDgzNDIzQHFxLmNvbT4=?=
To: =?utf-8?b?PT91dGYtOD9xP0NyaWZhbjIwMDM/PSA8Y3JpZmFuMjAwM0AxNjMuY29tPiwg?=
=?utf-8?b?PT91dGYtOD9iPzVZV0w1NUdlNklxcz89IDxhZG1pbkBjcmlmYW4uY29tPg==?=
Subject: =?utf-8?b?W+S7t+agvOmrmF0gdGl0bGUgaW5jbHVl5Lit5paHIERlbGwgWFBTIDEzIFhQ?=
=?utf-8?q?S_9360_Laptop_PC?=
CjxodG1sPgogICAgPGJvZHk+CiAgICAgICAgPGgxPlvku7fmoLzpq5hdIHRpdGxlIGluY2x1ZeS4
reaWhyBEZWxsIFhQUyAxMyBYUFMgOTM2MCBMYXB0b3AgUEM8L2gxPgogICAgICAgIDxwPk5vdCBi
dXkgPGEgaHJlZj0iaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9zdG9yZS9kL2RlbGwt
eHBzLTEzLXhwcy05MzYwLWxhcHRvcC1wYy84cTE3Mzg0Z3J6MzcvR1Y1RD9hY3RpdmV0YWI9cGl2
b3QlMjUzYW92ZXJ2aWV3dGFiIj50aXRsZSBpbmNsdWXkuK3mlocgRGVsbCBYUFMgMTMgWFBTIDkz
NjAgTGFwdG9wIFBDPC9hPiBmb3IgY3VycmVudCBwcmljZSA8Yj4kNjk5LjAwPC9iPiAmZ3Q7IGV4
cGVjdGVkIHByaWNlIDxiPiQ1OTkuMDA8L2I+PC9wPgogICAgICAgIDxwPlNvIHNhdmUgZm9yIGxh
dGVyIHByb2Nlc3M8L3A+CiAgICA8L2JvZHk+CjwvaHRtbD4K
【总结】
此处python中用smtp发送邮件,结果报错:
<code>smtplib.SMTPAuthenticationError: (530, 'Must issue a STARTTLS command first.') </code>
的原因是:
QQ邮箱中用了SSL的465(或587)端口,结果smtp库调用是却是用的非SSL的函数:
<code>smtplib.SMTP(smtpServer, smtpPort) </code>
换成:
<code>smtpObj = smtplib.SMTP_SSL(smtpServer, 465) </code>
即可。
转载请注明:在路上 » 【已解决】python中SMTP发送qq邮件出错:smtplib.SMTPAuthenticationError 530 Must issue a STARTTLS command first