在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码,
from email.mime.text import MIMEText import smtplib msg = MIMEText('hello, send by Python...', 'plain', 'utf-8') # 输入Email地址和口令: from_addr = '*********@qq.com' password = '*********' # 输入收件人地址: to_addr = '*********@gmail.com' # 输入SMTP服务器地址: smtp_server = 'smtp.qq.com' smtp_port = 465 print('done') server = smtplib.SMTP(smtp_server, smtp_port) # SMTP协议默认端口是25 print('done0') server.starttls() server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit()
结果是只打印了 done 就不再继续向下运行了。也就是代码停在了
server = smtplib.SMTP(smtp_server, smtp_port)
但是如果把端口号改成587的话,又能够正常执行;
google了一下,得到以下答案:
465端口是SSL/TLS通讯协议的 内容一开始就被保护起来了 是看不到原文的。
587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的