【发布时间】:2018-10-23 22:10:10
【问题描述】:
我正在尝试通过 python 使用 SMTP 发送电子邮件。 这是我的代码:
import smtplib
from email.mime.text import MIMEText
textfile='msg.txt'
you='ashwin@gmail.com'
me='ashwin@gmail.com'
fp = open(textfile, 'rb')
msg = MIMEText(fp.read())
fp.close()
# me == the sender's email address
# you == the recipient's email address
msg['Subject'] = 'The contents of %s' % textfile
msg['From'] = me
msg['To'] = you
print "reached before s"
s = smtplib.SMTP('127.0.0.1',8000)
print "reached after s"
s.sendmail(me, [you], msg.as_string())
s.quit()
当我尝试执行此代码时,会打印“在 s 之前到达”,然后进入一个无限循环左右,即“在 s 之后到达”不会打印并且程序仍在运行。 这是服务器的代码:
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
有人能找出问题所在吗?
【问题讨论】:
-
您的机器 (
127.0.0.1) 的端口8000上没有运行 SMTP 服务器。您有一个 Web 服务器 (HTTP)。我在这里回答了一个问题:stackoverflow.com/a/23047183/289011 看看。这可能会有所帮助。 -
@BorrajaX 根据我的回答,yagmail 可能对您也很感兴趣 :)