python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法
最近在SIOMP系統(tǒng)中添加一項(xiàng)功能時,即自動發(fā)送帶附件郵件到指定郵箱時,發(fā)現(xiàn)在發(fā)送時報錯:錯誤信息:STARTTLS extension not supported by server.很是奇怪,但發(fā)送無附件郵件時,可以正常發(fā)送,且不報錯,前期以為是代碼存在問題,如果調(diào)出對應(yīng)的錯誤信息反饋,似乎和代碼沒有什么關(guān)系;
詳細(xì)代碼如下所示:
# -*- 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"] = 'attachment;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 "郵件發(fā)送成功!"
except Exception, e:
print "%s" % e
報錯信息:
郵件發(fā)送失敗,錯誤信息:STARTTLS extension not supported by server.
原因分析:
在個人電腦上發(fā)送代附件郵件沒有問題,上傳至管理平臺服務(wù)器,出現(xiàn)無法正常發(fā)送郵件情況,且報錯信息如上所述,分析原因肯定和STARTTLS有關(guān)系,查看對應(yīng)相關(guān)信息,STARTTLS是對純文本通信協(xié)議的擴(kuò)展。它提供一種方式將純文本連接升級為加密連接(TLS或SSL),而不是另外使用一個端口作加密通信。顯然和TLS或SSL有關(guān)系,于是查看對應(yīng)Exchange郵件服務(wù)器發(fā)現(xiàn)以下問題;由于采用Exchange郵件系統(tǒng)進(jìn)行發(fā)送,在郵件系統(tǒng)中添加了對應(yīng)的匿名允許發(fā)送郵件功能,且剛好這臺服務(wù)器在允許匿名發(fā)送郵件的IP內(nèi),且身份驗(yàn)證未啟用傳輸層安全性(TLS),故無法正常發(fā)送郵件;
解決方法:
1、將對應(yīng)的服務(wù)器IP從允許匿名發(fā)送郵件名單中移除,測試發(fā)送帶附件郵件成功;
2、將對應(yīng)的允許匿名發(fā)送郵件的集線器身份驗(yàn)證允許“傳輸層安全性(TLS)”,測試發(fā)送帶附件郵件成功;
詳細(xì)設(shè)置方法如下所示:
wps3CB7.tmp
wps3CB8.tmp
至此問題解決;
?著作權(quán)歸作者所有:來自51CTO博客作者levinbin的原創(chuàng)作品,謝絕轉(zhuǎn)載,否則將追究法律責(zé)任
總結(jié)
以上是生活随笔為你收集整理的python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: std::shared_ptr之dele
- 下一篇: Jenkins自动编译库并上传服务器