Python 2: SMTPServerDisconnected: Connexion de manière inattendue fermé
J'ai un petit problème avec l'envoi d'un e-mail en Python:
#me == my email address
#you == recipient's email address
me = "[email protected]"
you = "[email protected]"
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Alert"
msg['From'] = me
msg['To'] = you
# Create the body of the message (a plain-text and an HTML version).
html = '<html><body><p>Hi, I have the following alerts for you!</p></body></html>'
# Record the MIME types of both parts - text/plain and text/html.
part2 = MIMEText(html, 'html')
# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part2)
# Send the message via local SMTP server.
s = smtplib.SMTP('aspmx.l.google.com')
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail(me, you, msg.as_string())
s.quit()
Donc, avant de maintenant, mon programme ne me donne pas une erreur, mais il ne voulait pas m'envoyer un email. Et maintenant, python me donne une erreur:
SMTPServerDisconnected: Connection unexpectedly closed
Comment puis-je résoudre ce problème?
- a u vérifier ur de connexion internet ?
- hey le voir, cette question : - stackoverflow.com/questions/6270782/sending-email-with-python
- double possible de Problème avec l'envoi de mails à partir d'une distribution de courrier id [Python]
- je pense que le problème est dans le serveur SMTP local
- faire que quelqu'un sait de toute autre collectivité publique serveurs SMTP?
- smtp.gmail.com sur 465 ou 587? assurez-vous simplement de permettre -en th ender compte "accès à moins d'applications sécurisées" (dans les paramètres de Sécurité pour le compte de l'expéditeur). peut-être QUE le serveur ne fonctionne pas comme prévu, mais d'autres serveurs de google sont de travail
Vous devez vous connecter pour publier un commentaire.
TLDR: commutateur de connexion authentifiée sur TLS.
Probablement le gmail serveur a rejeté la connexion après les données de la commande (très méchant d'entre eux pour le faire à ce stade :). Le message réel est plus probablement celui-ci:
Comment je le sais? Parce que j'ai essayé 🙂 avec le
s.set_debuglevel(1)
, qui imprime la conversation SMTP et vous pouvez voir de première main ce la question.Vous avez deux options ici:
De continuer à l'utiliser en relais comme expliqué par Google, c'est non chiffrée gmail-à-gmail, et vous avez de l'onu-la liste noire de votre propriété intellectuelle dans le cadre de leur procédure
Le plus infaillible de l'option est de passer à TLS avec authentification
Voici comment le changement de la source ressemble:
Maintenant, si vous essayez de "tricher" le système et l'envoyer avec un autre (non-gmail) adresse il va exiger que vous vous connecter à un autre nom d'hôte (certains enregistrements MX pour gmail), puis b) vous arrêter et de fermer la connexion sur les motifs de la liste noire de la propriété intellectuelle, et c) ne reverse DNS, DKIM, et beaucoup d'autres contre-mesures pour s'assurer que vous êtes réellement dans le contrôle du domaine que vous avez présenté dans le COURRIER: adresse.
Enfin, il y a aussi l'option 3) - l'utilisation de tout autre relais de courriel service, il y a des tonnes de bons 🙂
J'ai Eu le même problème et résolu simplement en spécifiant le port de droite comme ceci:
À l'aide de
smtplib.SMTP_SSL()
au lieu desmtplib.SMTP()
fonctionne pour moi. Essayez cette.J'ai remarqué un comportement étrange. J'ai utilisé des codes similaires mentionné à la fois la question et les réponses. Mon code a été de travail pour les derniers jours. Cependant, aujourd'hui, j'ai rencontré le message d'erreur mentionné dans la question.
Ma solution:
J'avais essayé ma tentative réussie via le réseau des bibliothèques. Aujourd'hui, j'ai essayé via Starbucks réseau (plus de portail captif). Je l'ai changé pour mon réseau mobile. Il a commencé à travailler à nouveau.
Éventuellement, Google rejette les demandes de réseaux non fiables.
J'ai été confrontée au même problème. Dans mon cas, le mot de passe a été changé juste quelques jours en arrière. Donc, il donnait l'erreur. Comme je l'ai mis à jour le mot de passe dans le code, son travail comme un charme...!!!
Googlers: j'ai eu un test du serveur smtp fonctionne localement. J'ai été faire cette erreur parce que j'ai été d'arrêter le serveur smtp local avant de fermer le client smtp.