我正在尝试通过Python发送电子邮件,但我遇到了错误。
这是我的代码:
import smtplib
content = 'example bla bla'
mail = smtplib.SMTP('localhost')
mail.ehlo()
mail.starttls()
mail.login('from@example.com','password')
mail.sendmail('from@example.com','to@example.com',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)
,则效果很好。这让我觉得问题可能在于“localhost”的配置,但是如果我在浏览器中打开http://localhost
,则会显示“It works”页面,所以我认为localhost配置得很好。
有谁知道问题出在哪里?
答案 0 :(得分: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')
答案 1 :(得分:0)
您可能不需要登录运行在&#39; localhost&#39;上的SMTP服务器。 (&#39; localhost&#39;通常与运行程序的计算机相同。)
试试这个:
import smtplib
content = 'example bla bla'
mail = smtplib.SMTP('localhost')
mail.ehlo()
mail.sendmail('from@example.com','to@example.com',content)
mail.close()