无法用Python发送电子邮件
问题描述:
我有这段代码,因为我正在尝试使用Python发送电子邮件。无法用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
答
'连接意外关闭'显示服务器可能打开但无法创建到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
如果你得到的错误突出显示为,
致命的:无法处理套接字类型AF_INET6与 “inet_protocols = IPv4的”
然后迅速转到postfix的配置文件在/etc/postfix/main.cf并检查是否有此文本并取消注释,
个inet_protocols = IPv4的
然后重启后缀,
# systemctl restart postfix
然后检查状态,希望你不应该得到任何错误。 然后检查python是否能够连接到SMTP服务器!
$ python -c 'import smtplib; smtplib.SMTP("localhost");'
你不应该得到这表明蟒蛇是能够连接到SMTP服务器的任何输出。
你现在可以运行你的电子邮件发送脚本!
是您的计算机上运行的邮件服务器(可能是'smtpd'或'sendmail')吗?如果没有,那会解释你的错误,因为在localhost上没有任何连接。 –
您是否使用'telnet localhost 25'获得SMTP问候消息? [翻译:它是python的错吗?] – AnFi
如何知道邮件服务器是否正在运行?我有能力发送/检索电子邮件。 – jackfromperu