2016-05-16 1 views
0

私たちは夜間スクリプトを実行して、私たちの会社の人々にメールを送ります。数日前、接続は長時間開いていて、最終的にはタイムアウトしていました。それ以来、同じマシン上で同じコードをExchange SMTPサーバーに接続することができませんでした。 Djangoは同じ設定を使用するように設定され、同じサーバ上で実行され、エラーメールを引き続き送信します。さらに、同じサーバー上で同じコードを実行すると、私たちはまだメールを送受信できます。私はその原因と潜在的な解決策について完全に困惑しています。Python SMTPLibはもう認証できませんが、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]ycompany.com' 
     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 

答えて

0

だから、ExchangeがWindows認証を期待しているために発生する問題ですthe LOGINコマンドよりも。私はlogin()行をコメントアウトして、メールをうまく送信できるようになりました。

このコードが正常に動作して突然動作を停止した理由はまだ分かりませんが、解決策はすべてをそのまま保ち、ログインコマンドの受け渡しをやめることです。

関連する問題