socket.gaierror: [Errno 11001] getaddrinfo a eșuat (Programare, Python)

user2499879 a intrebat.

Am încercat să atașez un fișier la mail folosind python. Cod:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from smtplib import SMTPException


def send_Email():
    file1="abc.txt"
    message = "Test mail"
    msg = MIMEMultipart()

    msg.attach(MIMEText(file(file1).read()))

    try:
        smtpObj = smtplib.SMTP('smtp server name',port)
        smtpObj.sendmail(sender, EmailId, message, msg.as_string() )
        print "Successfully sent email"
    except SMTPException:
        print "Error: unable to send email"

Bt Am primit eroarea: socket.gaierror: [Errno 11001] getaddrinfo failed

mesaj de eroare complet:

 File "C:Python27libsmtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
  File "C:Python27libsmtplib.py", line 309, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:Python27libsmtplib.py", line 284, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "C:Python27libsocket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11001] getaddrinfo failed

Comentarii

  • Se pare că socket lib nu poate rezolva numele serverului SMTP. –  > Por Denis.
  • Acest server SMTP are măcar o înregistrare A –  > Por Antti Haapala.
9 răspunsuri
Deepak Saini

Știu sigur că gaierror apare atunci când lucrați din spatele proxy-ului.

Steve Barnes

Problema este că căutarea DNS pentru „numele serverului smtp” eșuează – dacă acesta este codul dvs. exact, atunci puteți vedea de ce – dacă nu și aveți numele calificat valid pentru serverul SMTP, atunci este posibil să aveți probleme cu firewall-ul / conexiunea la internet etc., de asemenea, portul trebuie să fie setat la o valoare validă pentru a se potrivi cu configurația SMTP a serverelor dvs., (de obicei, portul 25 dar nu întotdeauna).

FunCoding

În cazul meu a fost un gazdă problemă. Utilizând modul de depanare, am observat că în (host, port, 0, SOCK_STREAM) am primit host=local și ar trebui să fie host=localhost.În run.py am definit localhost și în fișierul hosts (c:windowssystem32driversetchosts) a fost definit local. Ele trebuie să fie egale, altfel se obține socket.gaieeror.

lmocsi

Se pare că există o eroare în pachetul urllib3 versiunea 1.25.9. Aceasta a produs „socket.gaierror: [Errno 11001] getaddrinfo failed” pentru mine (lucrând din spatele unui server proxy autentificat).Trecerea la urllib3 versiunea 1.25.8 a rezolvat problema.

Tad

Răspunsul de mai jos poate fi destul de irelevant pentru întrebare. Dar,unii utilizatori pot avea un scenariu diferit.

Dacă un server poate fi accesat doar prin VPN și dacă încercăm să ajungem la el cu VPN-ul deconectat, apare această eroare : „gaierror: [Errno 11001] getaddrinfo failed” apare.

Conectarea la VPN și apoi executarea codului ar trebui să funcționeze bine.

Naresh Chary

este posibil să fi făcut o mică greșeală în fișierul settings.py..verificați codul încă o dată în fișierele de setăriettings.py:

EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your_email'
EMAIL_HOST_PASSWORD = 'your_password'
EMAIL_PORT = 587
EMAIL_USE_TLS=True

Ras

Trebuie să vă conectați folosind credențialele dvs. Încercați:

 smtpObj = smtplib.SMTP('smtp server name',port)

 smtpObj .starttls() 
 smtpObj .login(email, password)
 smtpObj.sendmail(sender, EmailId, message, msg.as_string() )
 print "Successfully sent email"

Gray Hat

Prefer ca voi să rulați fișierul ca administrator, de exemplu, deschideți cmd ca administrator, apoi tastați cd C:în calea fișierului dvs. .pyși apoi tastațipython filename.py

A funcționat pentru mine. Mult noroc.

Karimbasha Shaik

Trebuie să activați serviciul IMAP/SMTP activ pentru poșta dvs. gazdă.

Tags: