1

随着最近发布的 App Engine 1.7.7,终于可以使用 TCP 或 UDP 套接字建立出站连接。这开启了一个充满新可能性的世界。

在 Python 2.5 中使用import socket,我已经能够成功测试一些简单的低级命令(例如 socket.getaddrinfo("smtp.gmail.com", 587)...)

我现在尝试在端口 587 上启动经过身份验证的 SMTP 连接:

import smtplib
session = smtplib.SMTP('smtp.gmail.com', 587)

...但我立即在 _remote_socket.py 中遇到了NotImplementedError来自gethostbyaddr函数的一个。这是令人惊讶的,因为在https://developers.google.com/appengine/docs/python/sockets/overview的 Google App Engine Sockets API 概述中没有提到这个函数的非实现

知道这里发生了什么,以及如何绕过这个限制?

注意:我还没有迁移到 Python 2.7。我仍在使用 Python 2.5 和 old_dev_appserver.py 作为开发服务器。

谢谢你。

4

1 回答 1

2

您可以尝试将 local_hostname 传递给构造函数吗?

session = smtplib.SMTP('smtp.gmail.com', 587, local_hostname='appengine.google.com')

于 2013-05-01T08:42:51.793 回答