SMTP Python Connection неожиданно закрыто - PullRequest
0 голосов
/ 13 января 2019

Привет всем на моей странице вопросов.

Итак, я хотел создать программу, которая автоматически отправляла бы мне письма по электронной почте со спамом, который я делал раз в час, просто чтобы изучить некоторые классные библиотеки Python, но когда я запускаю программу, она выдает мне ошибку. Ошибка прямо под моим кодом. Я заблокировал пароль, потому что он закрытый и да. Прежде чем вы, ребята, скажете, что это потому, что пароль неправильный, это не потому, что если бы это было так, он сказал бы: «Аутентификация не удалась»

Мой код:

#imports
import smtplib

port = 465

smtp_server = "mail.gmx.com"
email = "kbodfkghset232gvja23@gmx.us"
password = "****************"
target = "gerik700@gmail.com"
message = """
Subject: Test

This is a test message
"""

#login to server to send email
server = smtplib.SMTP(host=smtp_server, port=port)
try:
    server.starttls()
    server.login(email, password)
    server.set_debuglevel(1)
    server.ehlo()
    #sending message
    server.sendmail(email, target, message)


except Exception as e:
    print(e)
finally:
    server.quit()

Моя ошибка:

Traceback (most recent call last):
  File "Email_Program.py", line 17, in <module>
    server = smtplib.SMTP(host=smtp_server, port=port)
  File "C:\Program Files (x86)\Python37-32\lib\smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Program Files (x86)\Python37-32\lib\smtplib.py", line 338, in connect
    (code, msg) = self.getreply()
  File "C:\Program Files (x86)\Python37-32\lib\smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

Любая помощь будет оценена

1 Ответ

0 голосов
/ 14 января 2019

Согласно https://support.gmx.com/pop-imap/imap/windowsmailapp.html, клиентам, отправляющим исходящую почту через mail.gmx.com, следует подключиться к порту 587 и использовать starttls. Итак, сначала попробуйте изменить сценарий для подключения через порт 587 вместо порта 465. Кроме того, вам нужно будет отправить команду ehlo перед командой starttls, а затем снова после команды starttls. Должно работать следующее:

import smtplib

to='to@to.com'
fromname='sender'
fromemail='from@from.com'
subject='this is the subject'
body='this is the message body'

message=''
message+= "To: " + to + "\n"
message+= "From: \"" + fromname + "\" <" + fromemail + ">\n"
message+= "Subject: " + subject + "\n"
message+= "\n"
message+= body

mailserver = smtplib.SMTP('mail.gmx.com',587)
mailserver.ehlo()
mailserver.starttls()
mailserver.ehlo()  #again
mailserver.login('username', 'password')
mailserver.sendmail(fromemail, to, message)
mailserver.quit()
...