Wir führen ein Skript über Nacht, um E-Mails an eine Reihe von Menschen in unserem Unternehmen zu senden. Vor ein paar Tagen wurde die Verbindung für eine lange Zeit offen gehalten und endete schließlich mit einem Zeitlimit. Seitdem konnten wir nicht denselben Code auf demselben Computer verwenden, um eine Verbindung zum Exchange-SMTP-Server herzustellen. Django ist so konfiguriert, dass es genau die gleichen Einstellungen verwendet, auf demselben Server läuft und weiterhin Fehler-E-Mails versendet. Darüber hinaus können wir den gleichen Code auf einem anderen Server ausführen und trotzdem eine Verbindung herstellen und E-Mails senden. Ich bin völlig verwirrt hinsichtlich der Ursachen und möglichen Lösungen.Python SMTPLib kann sich nicht mehr authentifizieren, aber django kann immer noch E-Mails auf demselben Rechner senden
Tl; dr:
- Python smtplib verwendete vor auf diesem Server vor einem Timeout ein paar Tage gut zu funktionieren
- Django können E-Mails aus dem gleichen Server mit der gleichen Authentifizierungs Info
- Der schicken gleicher Code mit dem gleichen Anmeldedatum authentifiziert noch, wenn auf einem anderen Server läuft
E-Mail-Anschluss:
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)
Der Code wird wie so genannt:
emailer = common.Email_Connect()
emailer.smtp_conn()
emailer.send_email(send_to,msg_subject,msg_body,None,attachment)
emailer.close()
Django Mail-Einstellungen (funktioniert prima auf der gleichen Maschine):
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"
Und hier ist die vollständige Debug-Ausgabe den Code ausgeführt wird:
(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