Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法

         最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supported by server.很是奇怪,但发送无附件邮件时,可以正常发送,且不报错,前期以为是代码存在问题,如果调出对应的错误信息反馈,似乎和代码没有什么关系;

 

详细代码如下所示:

# -*- coding: utf-8 -*-
import email
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
mailsenduser = "report@lidongni.com"
mailreceiveuser = "lidongni@lidongni.com"
mailhead = "TEST邮件"
mailcontent = "测试邮件"
mailsmtpserver = "smtp.lidongni.com"
mailsenduser1 = "report"
mailsenduserpasswd = "789456123"
filepath = r".\123.csv"
try :
    msg=email.mime.multipart.MIMEMultipart()
    msg['from']=mailsenduser
    msg['to']=mailreceiveuser
    msg['subject']=mailhead
    content=mailcontent
    txt=email.mime.text.MIMEText(content,_subtype='plain',_charset='gb2312')
    msg.attach(txt)
    att1 = email.mime.text.MIMEText(open('%s' % filepath,'rb').read(),'base64','gb2312')
    att1["Content-Type"] = 'application/octet-stream'
    att1["Content-Disposition"] = 'p_w_upload;filename="123.csv"'
    msg.attach(att1)
    smtp=smtplib.SMTP(mailsmtpserver,'25')
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
    smtp.login(mailsenduser1,mailsenduserpasswd)
    smtp.sendmail(mailsenduser,mailreceiveuser,str(msg))
    smtp.quit()
    print "邮件发送成功!"
except Exception, e:
    print "%s" % e

报错信息:

        邮件发送失败,错误信息:STARTTLS extension not supported by server.

原因分析:

        在个人电脑上发送代附件邮件没有问题,上传至管理平台服务器,出现无法正常发送邮件情况,且报错信息如上所述,分析原因肯定和STARTTLS有关系,查看对应相关信息,STARTTLS是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。显然和TLS或SSL有关系,于是查看对应Exchange邮件服务器发现以下问题;由于采用Exchange邮件系统进行发送,在邮件系统中添加了对应的匿名允许发送邮件功能,且刚好这台服务器在允许匿名发送邮件的IP内,且身份验证未启用传输层安全性(TLS),故无法正常发送邮件;

解决方法:

        1、将对应的服务器IP从允许匿名发送邮件名单中移除,测试发送带附件邮件成功;

        2、将对应的允许匿名发送邮件的集线器身份验证允许“传输层安全性(TLS)”,测试发送带附件邮件成功;

详细设置方法如下所示:

wps3CB7.tmp

wps3CB8.tmp

至此问题解决;

优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/lidongni/1762748

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。