【问题标题】:Can't send E-Mails with Python无法使用 Python 发送电子邮件
【发布时间】:2016-06-21 07:50:15
【问题描述】:

当我尝试使用 Python 发送电子邮件时,我有此代码。

def Mail():
   import smtplib
   import textwrap
   SERVER = "localhost"

   FROM = "fromemail"
   TO = ["toemail"] 

   SUBJECT =(input('What is the subject of your E-Mail'))

   TEXT =(input('What do you want the E-Mail to say?'))

   message = textwrap.dedent("""\
   From: %s
   To: %s
   Subject: %s

   %s
   """ % (FROM, ", ".join(TO), SUBJECT, TEXT))

   server = smtplib.SMTP(SERVER)
   server.sendmail(FROM, TO, message)
   server.quit()

这是我收到的错误消息。

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    Mail()
  File "E:\Coursework\EMail.py", line 26, in Mail
    server = smtplib.SMTP(SERVER)
  File "C:\Python33\python-3.3.5\lib\smtplib.py", line 241, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Python33\python-3.3.5\lib\smtplib.py", line 322, in connect
    (code, msg) = self.getreply()
  File "C:\Python33\python-3.3.5\lib\smtplib.py", line 375, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

【问题讨论】:

  • 您的计算机上是否正在运行邮件服务器(可能是smtpdsendmail)?如果不是,那将解释您的错误,因为在 localhost 上没有可连接的内容。
  • 您是否收到使用telnet localhost 25 的SMTP 问候消息? [翻译:是python的错吗?]
  • 如何知道邮件服务器是否正在运行?我有能力发送/检索电子邮件。
  • 有没有简单的方法通过python发送邮件?

标签: python email smtp smtplib


【解决方案1】:

“连接意外关闭”表明服务器可能已打开,但无法创建与 smtplib 的连接。

您可以检查端口 25 smtp 服务的状态来验证,

# netstat -an | grep -i :25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

然后,查看服务占用25端口的状态,

# netstat -plnt | grep -i :25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 30860/master

你可能会有同样的情况, 然后只需检查主/后缀进程的状态,

# systemctl status postfix

如果您将错误突出显示为,

致命:无法使用“inet_protocols = ipv4”处理套接字类型 AF_INET6

然后快速转到 /etc/postfix/main.cf 处的 postfix 配置文件并检查是否有此文本并取消注释,

inet_protocols = ipv4

然后重启postfix,

# systemctl restart postfix

然后检查状态,希望你不应该得到任何错误。 然后检查python是否能够连接到SMTP服务器!

$ python -c 'import smtplib; smtplib.SMTP("localhost");'

你不应该得到任何显示 python 能够连接到 SMTP 服务器的输出。

您现在可以运行您的电子邮件发送脚本了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2018-01-20
    • 2015-06-11
    • 2018-11-08
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多