#python #email #proxy #smtp #socks
Вопрос:
пытаясь создать отправителя почты на python, скрипт работает на моем персональном ноутбуке, но когда я запускаю его на своем рабочем ноутбуке (я недавний стажер), я думаю, что прокси-сервер мешает подключению к smtp-серверу gmail
ошибка заключается в следующем:
File "D:ocm-hours-report-automationmail-managersrcpythonmail-sender.py", line 44, in <module>
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
File "C:UsersmyuserAppDataLocalProgramsPythonPython39libsmtplib.py", line 255, in __init__
(code, msg) = self.connect(host, port)
File "C:UsersmyuserAppDataLocalProgramsPythonPython39libsmtplib.py", line 341, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:UsersmyuserAppDataLocalProgramsPythonPython39libsmtplib.py", line 312, in _get_socket
return socket.create_connection((host, port), timeout,
File "C:UsersmyuserAppDataLocalProgramsPythonPython39libsocket.py", line 822, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:UsersmyuserAppDataLocalProgramsPythonPython39libsocket.py", line 953, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed
и код такой:
#The mail addresses and password
sender_address = 'email1@gmail.com'
sender_pass = 'password'
receiver_address = 'email2@gmail.com'
#Setup the MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.' #The subject line
#The body and the attachments for the mail
message.attach(MIMEText(mail_content, 'plain'))
#Create SMTP session for sending the mail
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
session.starttls() #enable security
session.login(sender_address, sender_pass) #login with mail_id and password
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('Mail Sent')
есть идеи, что я на самом деле могу сделать? попытался заставить socks.setdefaultproxy, но он сказал, что импорт носков недоступен
Спасибо!
Ответ №1:
Ваши подозрения верны. socket.gaierror: [Errno 11001] getaddrinfo failed
указывает, что приложение не может разрешить IP-адрес хоста. Существуют различные способы обойти это в зависимости от операционной системы машины, на которой выполняется код, например, вручную сопоставить в /etc/hosts. Но даже если IP-адрес разрешен, это не означает, что прокси-сервер разрешит подключение к нему.
Комментарии:
1. я не использую linux, тхо
2. но я решил, что не хочу делать это с помощью smtp gmail, так как наша корпорация предоставляет внутренний smtp. Это работает именно так
3. /etc/hosts не является эксклюзивным для Linux. В окнах: C:WindowsSystem32driversetchosts. Рад, что вы нашли решение, которое работает.