如何在Python中设置本地主机?

3
该项目旨在能够在Python内部发送电子邮件。我可以成功地将其发送到"smtp.gmail.com",但使用本地主机或127.0.0.1返回一个"errno 111,连接被拒绝"的错误。该语句为:
    server = smtplib.SMTP('127.0.0.1', 8025)

备注: 我正在运行Ubuntu操作系统,使用Python 3.2或根据这里的专业人士建议使用Python 2.7版本。我的编程知识可以说是有限的。


1
您需要在本地计算机上安装一个SMTP服务器。 - AJ.
从您的主机发送邮件并不容易。 您需要安装和配置邮件网关(例如sendmail,exim,courier)。 此外,默认情况下它们侦听端口25而不是8025。 您需要将其配置为发送到“更智能”的主机。 您自己,您的公司或您的ISP可能已经拥有邮件网关,您可以直接使用它。 这不是一个Python编程问题,而是一个电子邮件管理员问题。 - Keith
你是真的想从本地机器发送邮件还是只是调试确认你的邮件消息被格式化并发送到SMTP服务器了? - Brian Neal
2个回答

1

首先,使用 Telnet 测试本地 SMTP 连接。(备用说明 在此处)这将告诉您是否可以按照您认为的方式连接到本地 SMTP 服务器。

您可能有以下几个问题:

  1. 您的计算机上没有 SMTP 服务器;或
  2. 您有 SMTP,但它需要密码和/或用户名;或
  3. 您的本地计算机上有 SMTP,但未正确配置或配置为支持本地 SMTP -> Internet;或
  4. 计算机的当前 IP 或 DNS 设置;或
  5. 从 Python 调用本地 SMTP 服务器的方式。

Python SMTPlib 支持使用 LMTP 进行授权连接以解决第二个问题。

尝试使用端口 25 解决第五个问题。

对于其他问题,您需要找到或设置一个合作的SMTP服务器。

顺便说一句:正确配置和保护SMTP服务器并不是一件简单的事情...


我该如何在Ubuntu中测试本地SMTP连接?很抱歉在原帖中没有包含这个问题,我已经编辑过了。 - Celer
使用 $ telnet 127.0.0.1 8025 命令。如果出现“连接被拒绝”或其他错误,那就是你的问题了。如果成功进入有效的SMTP服务器,请按照我提供的逐步说明进行操作。如果你能够通过telnet连接SMTP主机成功发送电子邮件,那么你应该可以顺利地进行下一步操作了。 - the wolf
连接被拒绝。感谢您的时间。注:我并不是在尝试创建一个可以接收电子邮件的安全服务器。我希望发送电子邮件相对容易。 - Celer
@Celer:尝试使用端口25,像这样:$ telnet 127.0.0.1 25 - the wolf

1

您正在尝试使用本地计算机作为SMTP服务器。在Ubuntu中实现这一点最简单的方法是安装apt / synaptic中的exim4或postfix软件包之一...

确保在提示时不允许不信任的计算机使用您的主机作为邮件中继。默认设置应该足以避免此问题-但仍允许从您的计算机发送邮件。

还请注意,SMTP的默认端口号是25,并非您代码示例中的8025。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接