使用smtpd.DebuggingServer作为STMP服务器从python发送电子邮件

dm7*_*m76 1 python email smtpd smtplib

我正在尝试使用Python发送电子邮件并使用以下代码:

import smtplib
import datetime

SERVER = "localhost"
PORT = 1025

FROM = "me@mydevice.com"
TO = ["myemailaddress@something.com"]

SUBJECT = "test"

dt = datetime.datetime.now()
TEXT = "blabla bla @ " + str(dt)

message = """\
From: %s
To: %s
Subject: %s

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

server = smtplib.SMTP(SERVER,PORT)
server.sendmail(FROM,TO,message)
server.quit()
Run Code Online (Sandbox Code Playgroud)

没有安装/设置任何STMP服务器,我只是使用这个:

python -m smtpd -n -c DebuggingServer localhost:1025
Run Code Online (Sandbox Code Playgroud)

代码似乎运行正常,没有错误,服务器甚至通知我:

---------- MESSAGE FOLLOWS ----------
From: me@mydevice.com
To: myemailaddress@something.com
Subject: test
X-Peer: 127.0.0.1

blabla bla @ 2014-01-29 14:44:37.219724
------------ END MESSAGE ------------
Run Code Online (Sandbox Code Playgroud)

当然,'myemailaddress@something.com'是真实的现有电子邮件地址的代表,而'me@mydevice.come'则由此组成.

但没有电子邮件到达myemailaddress@something.com ...

我错过了一些明显的东西吗?

我读到了某个地方(对不起但是找不到它),像gmail这样的服务可能会阻止来自非静态IP地址的电子邮件.这可能是这里发生的事情吗?

不知道在哪里看......

谢谢大卫

Aar*_*Lam 5

根据smtpd模块上的python文档:

class smtpd.DebuggingServer(localaddr, remoteaddr)
    Create a new debugging server. Arguments are as per SMTPServer. 
    Messages will be discarded, and printed on stdout.
Run Code Online (Sandbox Code Playgroud)

因此该模块实际上并不发送电子邮件.它将它打印在终端中.