无法用Python发送电子邮件

无法用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 
+0

是您的计算机上运行的邮件服务器(可能是'smtpd'或'sendmail')吗?如果没有,那会解释你的错误,因为在localhost上没有任何连接。 –

+0

您是否使用'telnet localhost 25'获得SMTP问候消息? [翻译:它是python的错吗?] – AnFi

+0

如何知道邮件服务器是否正在运行?我有能力发送/检索电子邮件。 – jackfromperu

'连接意外关闭'显示服务器可能打开但无法创建到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服务器的任何输出。

你现在可以运行你的电子邮件发送脚本!