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"] = '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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java郵件傳送帶附件Java
- 使用 smtplib 傳送郵件
- Python 傳送帶有附件的郵件Python
- c# 傳送郵件程式碼,帶附件C#
- linux shell傳送帶附件的郵件Linux
- Python通用郵件傳送(smtplib)Python
- 【主機】sendEmail傳送帶有附件的郵件AI
- Laravel 傳送郵件報錯Laravel
- 【python】用SMTP模組傳送帶附件的郵件Python
- Python傳送帶附件的圖文格式報表指令碼(smtplib)Python指令碼
- python模組學習:smtplib 郵件傳送Python
- 利用Jmail傳送帶附件的郵件時亂碼的解決方案AI
- Mac郵件怎麼傳送超大附件Mac
- 自動生成AWR報告並以郵件附件傳送
- python smtplib 傳送郵件簡單介紹Python
- python傳送郵件例項 - 使用smtplib模組Python
- Laravel5.8 傳送郵件報錯Laravel
- 如何使用ABAP傳送帶有PDF格式附件的電子郵件
- Linux自動下傳送HTML格式並帶附件的郵件LinuxHTML
- 如何使用 ABAP 程式碼傳送帶有 PDF 附件的電子郵件
- 傳送帶圖片的郵件
- zabbix 配置傳送郵件報警
- 郵件傳送
- 傳送郵件
- 怎麼傳送超大檔案?困擾已久的郵件大附件傳送問題解決了!
- iOS12系統應用傳送郵件中的附件iOS
- C# - MailSender 郵件傳送元件原始碼 (支援ESMTP, 附件) (轉)C#AI元件原始碼
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- Android郵件傳送詳解Android
- Android郵件傳送詳解 .Android
- Laravel 傳送郵件Laravel
- PHP傳送郵件PHP
- Django——郵件傳送Django
- java郵件傳送Java
- Laravel傳送郵件Laravel
- gmail傳送郵件AI
- Oracle郵件傳送Oracle
- java傳送郵件Java