2015-05-13 92 views
0

我試圖通過Python發送電子郵件,但出現錯誤。Python不發送電子郵件:smtplib.SMTPException:服務器不支持STARTTLS擴展

這是我的代碼:

import smtplib 

content = 'example bla bla' 
mail = smtplib.SMTP('localhost') 
mail.ehlo() 
mail.starttls() 
mail.login('[email protected]','password') 
mail.sendmail('[email protected]','[email protected]',content) 
mail.close() 

當我運行該文件,這個錯誤顯示出來:

Traceback (most recent call last): 
    File "SendEmail.py", line 11, in <module> 
    mail.starttls() 
    File "/usr/lib/python2.7/smtplib.py", line 637, in starttls 
    raise SMTPException("STARTTLS extension not supported by server.") 
smtplib.SMTPException: STARTTLS extension not supported by server. 

大約有其他人有相同問題的職位,但通常只是順序的命令是錯誤的(如this one),顯然我的是正確的。

如果我將mail = smtplib.SMTP('localhost')更改爲mail = smtplib.SMTP('smtp.gmail.com', 587)它很好。這讓我覺得問題可能出在「本地主機」的配置上,但如果我在瀏覽器中打開http://localhost,則會顯示「It works」頁面,所以我認爲本地主機配置良好。

有誰知道哪裏可以解決問題?

+0

在電子郵件中打開'http:// localhost'並不意味着太多,因爲它使用'http',而電子郵件使用'smtp'。所以,不,本地主機可能配置不正確,問題是不支持'STARTTLS'。 –

+0

恩,謝謝你的回答。我將嘗試配置smtp。 – undisp

回答

0

你可能不需要登錄到上「localhost」的運行SMTP服務器(「localhost」的是常規的程序運行在同一臺計算機。)

試試這個:

import smtplib 

content = 'example bla bla' 
mail = smtplib.SMTP('localhost') 
mail.ehlo() 
mail.sendmail('[email protected]','[email protected]',content) 
mail.close() 
1

嘗試發表評論mail.starttls()。我有這個問題,它在我的代碼中工作。

import smtplib 
import string 
from email.mime.multipart import MIMEMultipart 
from email.mime.application import MIMEApplication 
from email.mime.text import MIMEText 

smtpObj = smtplib.SMTP('mailrelay.address.com', 587) #email relay address 
smtpObj.ehlo() 
#smtpObj.starttls() #commented this out as was causing issues 
smtpObj.login('domain\username', 'pwrd123') 
相關問題