Python2.7 smtplib傳送帶附件郵件報錯STARTTLS解

solution發表於2021-09-09


         最近在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"] = '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 "郵件傳送成功!"

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

至此問題解決;

©著作權歸作者所有:來自51CTO部落格作者levinbin的原創作品,謝絕轉載,否則將追究法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2820072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章