我们运行一个通宵脚本,向我们公司的一群人发送电子邮件。几天前,连接已经打开很长一段时间并最终超时,从那时起我们就无法在同一台机器上使用相同的代码连接到Exchange SMTP服务器。 Django配置为使用相同的确切设置,在同一台服务器上运行,并继续发送任何错误电子邮件。此外,在不同的服务器上运行相同的代码,我们仍然可以连接和发送电子邮件。我对原因和潜在解决方案感到十分困惑。
铊; DR:
电子邮件连接器:
git format-patch $(git log --reverse --author="John Doe" --pretty="%H" -- the/needed/path | awk '{print -NR, " ", $0}')
代码的调用如下:
class Email_Connect(object):
def __init__(self):
self.user = "mydomain\myuser"
self.pwd = "mypassword"
self.send_from = 'myuser@mycompany.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)
Django邮件设置(在同一台机器上正常工作):
emailer = common.Email_Connect()
emailer.smtp_conn()
emailer.send_email(send_to,msg_subject,msg_body,None,attachment)
emailer.close()
这是运行代码的完整调试输出:
DEFAULT_FROM_EMAIL = 'myuser@mycompany.com'
SERVER_EMAIL = 'myuser@mycompany.com'
EMAIL_USE_TLS = True
EMAIL_HOST = "myrelay.mycompany.net"
EMAIL_HOST_USER = "myuser"
EMAIL_HOST_PASSWORD = "mypassword"
答案 0 :(得分:0)
事实证明问题是由Exchange期望Windows身份验证而不是LOGIN命令引起的。我碰巧注释掉了login()行,现在我可以成功发送电子邮件了。
我仍然不知道为什么这段代码成功运行并突然停止工作,但解决办法是保持一切正常并停止传递登录命令。