Получение getaddrinfo [Errno -2] при попытке использовать Beaglebone Black для отправки электронной почты

Я пытаюсь использовать Beaglebone Black (BBB) ​​для отправки уведомлений по электронной почте, но получаю сообщение об ошибке getaddrinfo, которая выглядит следующим образом:

socket.gaierror: [Errno -2] Имя или служба неизвестны

Я работал над этим некоторое время и не могу найти, почему это не работает.

Нано-файл, который я пытаюсь запустить:

import smtplib
#import time
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
#time.sleep(1000)
print("SMTP object created...")
smtpObj.ehlo()
#time.sleep(1000)
print("EHLO...")
smtpObj.starttls()
#time.sleep(1000)
print("Starting TLS...")
smtpObj.login('[email protected]', 'EXAMPLEPASSWORD')
#time.sleep(1000)
print("Logged into [email protected]...")
smtpObj.sendmail('[email protected]', 'EXAMPLERECIPIENT', '''Subject:test subject \ntest body
Auto Alert System.''')
{}
#time.sleep(1000)
print("Sending email...")
smtpObj.quit()
#time.sleep(1000)
print("Destorying object.")

Результат вызова функции test_email2.py выглядит следующим образом:

root@beaglebone:~/Desktop/email_project# python test_email2.py
Traceback (most recent call last):
File "test_email2.py", line 4, in <module>
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.7/smtplib.py", line 309, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.7/smtplib.py", line 284, in _get_socket
return socket.create_connection((port, host), timeout)
File "/usr/lib/python2.7/socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known

Формат, которому я следую, основан на формате, предоставленном https://automatetheboringstuff.com/chapter16/.


person Ed Sawden    schedule 15.09.2016    source источник


Ответы (1)


socket.gaierror означает, что (лежащая в основе libc) функция getaddrinfo не смогла получить IP-адреса для предоставленных вами доменных имен. Это объясняет, почему это не удалось: [Errno -2] Name or service not known, поэтому он не знает о домене с таким именем, smtp.gmail.com. Это доменное имя, очевидно, существует, поэтому вам следует изучить системные настройки DNS в вашей системе BBB (и на самом деле это больше вопрос сообщества суперпользователя).

Какие DNS-серверы используются в конфигурации? Если вы используете локальный кэширующий DNS-сервер в режиме loopback, работает ли он? Правильно ли он настроен для разрешения рекурсивных запросов? Эта конкретная проблема, скорее всего, не имеет ничего общего с Python или вашим кодом; это ваша система BBB не может разрешить хотя бы некоторые, если не все, доменные имена.

person Pavel Gurkov    schedule 15.09.2016
comment
Спасибо за первый абзац, это действительно помогает мне понять, что происходит. Что касается второго абзаца, я хотел бы предоставить эту информацию, но я, честно говоря, не знаю статуса ни одного из этих пунктов и не знаю, как их проверить. Мне может понадобиться время, чтобы во всем этом разобраться. - person Ed Sawden; 15.09.2016
comment
@EdSawden, присоединяйтесь: chat.stackoverflow.com/rooms/123476/ Я постараюсь вам помочь. - person Pavel Gurkov; 15.09.2016
comment
Я действительно хотел бы общаться в чате, но мне нужно еще 14 репутации, чтобы использовать чат (минимум 20 репутации; у меня 6). - person Ed Sawden; 16.09.2016
comment
Теперь у меня достаточно репутации, чтобы пользоваться чатом. Вы все еще открыты для обсуждения этой темы? Я не могу найти никакого решения, поэтому я сейчас в полной растерянности. - person Ed Sawden; 27.09.2016
comment
@EdSawden, конечно, но я не могу пригласить тебя в чат. По какой-то причине написано, что вам по-прежнему запрещено общаться в чатах, извините. Во всяком случае, чат находится здесь: -emai">chat.stackoverflow.com/rooms/124305/ - person Pavel Gurkov; 27.09.2016