Мы запускаем ночной скрипт для отправки электронных писем группе людей в нашей компании. Несколько дней назад соединение оставалось открытым в течение длительного периода времени и в конечном итоге истекло, и с тех пор мы не можем использовать один и тот же код на том же компьютере для подключения к SMTP-серверу обмена. Django настроен на использование точно таких же настроек, работает на том же сервере и продолжает рассылать сообщения об ошибках. Кроме того, запуская тот же код на другом сервере, мы по-прежнему можем подключаться и отправлять электронные письма. Я совершенно озадачен относительно причин и возможных решений.
Tl;dr:
- Python SMTPlib отлично работал на этом сервере до истечения времени ожидания несколько дней назад.
- Django может отправлять электронные письма с одного и того же сервера с той же информацией для аутентификации.
- Тот же код с той же информацией для входа по-прежнему аутентифицируется при запуске на другом сервере.
Соединитель электронной почты:
class Email_Connect(object):
def __init__(self):
self.user = "mydomain\myuser"
self.pwd = "mypassword"
self.send_from = '[email protected]'
self.local_hostname = socket.getfqdn()
def smtp_conn(self,server='myrelay.mycompany.net'):
self.c = smtplib.SMTP(server, local_hostname=self.local_hostname)
self.c.set_debuglevel(1)
self.c.ehlo()
self.c.starttls()
self.c.ehlo()
self.c.login(self.user, self.pwd)
Код называется так:
emailer = common.Email_Connect()
emailer.smtp_conn()
emailer.send_email(send_to,msg_subject,msg_body,None,attachment)
emailer.close()
Настройки почты Django (отлично работают на том же компьютере):
DEFAULT_FROM_EMAIL = '[email protected]'
SERVER_EMAIL = '[email protected]'
EMAIL_USE_TLS = True
EMAIL_HOST = "myrelay.mycompany.net"
EMAIL_HOST_USER = "myuser"
EMAIL_HOST_PASSWORD = "mypassword"
А вот полный отладочный вывод запуска кода:
(production) c:\site\production\web\core>python program_replication.py
(21, 'send spool email reports')
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
send: 'ehlo mycomputer.mycompany.net\r\n'
reply: '250-smtp.mycompany.net Hello [10.1.*.*]\r\n'
reply: '250-SIZE 31457280\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-DSN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250-STARTTLS\r\n'
reply: '250-AUTH\r\n'
reply: '250-8BITMIME\r\n'
reply: '250-BINARYMIME\r\n'
reply: '250-CHUNKING\r\n'
reply: '250-XEXCH50\r\n'
reply: '250 XSHADOW\r\n'
reply: retcode (250); Msg: smtp.mycompany.net Hello [10.1.*.*]
SIZE 31457280
PIPELINING
DSN
ENHANCEDSTATUSCODES
STARTTLS
AUTH
8BITMIME
BINARYMIME
CHUNKING
XEXCH50
XSHADOW
send: 'STARTTLS\r\n'
reply: '220 2.0.0 SMTP server ready\r\n'
reply: retcode (220); Msg: 2.0.0 SMTP server ready
send: 'ehlo mycomputer.mycompany.net\r\n'
reply: '250-smtp.mycompany.net Hello [10.1.*.*]\r\n'
reply: '250-SIZE 31457280\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-DSN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250-AUTH\r\n'
reply: '250-8BITMIME\r\n'
reply: '250-BINARYMIME\r\n'
reply: '250-CHUNKING\r\n'
reply: '250-XEXCH50\r\n'
reply: '250 XSHADOW\r\n'
reply: retcode (250); Msg: smtp.mycompany.net Hello [10.1.*.*]
SIZE 31457280
PIPELINING
DSN
ENHANCEDSTATUSCODES
AUTH
8BITMIME
BINARYMIME
CHUNKING
XEXCH50
XSHADOW
ERROR: No suitable authentication method found. replication module send spool email reports failed to run