【问题标题】:Python doesn't send email: smtplib.SMTPException: STARTTLS extension not supported by serverPython 不发送电子邮件:smtplib.SMTPException:服务器不支持 STARTTLS 扩展
【发布时间】:2015-07-25 01:25:40
【问题描述】:

我正在尝试通过 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 配置良好。

有谁知道问题出在哪里?

【问题讨论】:

  • 打开http://localhost 在电子邮件上下文中没有多大意义,因为它使用http 而电子邮件使用smtp。所以,不,本地主机可能没有正确配置,问题是不支持STARTTLS
  • 嗯,谢谢你的回答。我会尝试配置 smtp。

标签: python email localhost


【解决方案1】:

您可能不需要登录到运行在“localhost”上的 SMTP 服务器(“localhost”通常是运行您的程序的同一台计算机。)

试试这个:

import smtplib

content = 'example bla bla'
mail = smtplib.SMTP('localhost')
mail.ehlo()
mail.sendmail('from@example.com','to@example.com',content)
mail.close()

【讨论】:

    【解决方案2】:

    尝试注释掉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')
    

    【讨论】:

    • 请注意,这意味着您没有加密连接。 IE。凭据和电子邮件均以明文形式发送。
    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    相关资源
    最近更新 更多