使用Microsoft企业电子邮件帐户

时间:2018-01-03 10:39:23

标签: django email smtplib

我正在使用Django 1.11的默认EmailBackend,我只是简单地将send_mail方法称为ref。文件说,这是我的SMTP服务器的设置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp-mail.outlook.com'
EMAIL_PORT = '587'
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'oalite@xxx.com'
EMAIL_HOST_PASSWORD = 'xxxxx'
EMAIL_SUBJECT_PREFIX = '[OALite Admin]'

这是smtplib.py输出的日志:

reply: b'250-CHUNKING\r\n'
reply: b'250 SMTPUTF8\r\n'
reply: retcode (250); Msg: b'SG2PR06CA0180.outlook.office365.com Hello [85.203.47.85]\nSIZE 157286400\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\nAUTH LOGIN XOAUTH2\n8BITMIME\nBINARYMIME\nCHUNKING\nSMTPUTF8'
send: 'AUTH LOGIN b2FBaXRl0GlyaXhpLmNvb0==\r\n'
reply: b'334 UGFzc3dvcmQ6\r\n'
reply: retcode (334); Msg: b'UGFzc3dvcmQ6'
send: 'QEdBbH1w0DJuSwY=\r\n

>>>>>>>>>>>>>>>>>> halted here for about 15s to wait the reply <<<<<<<<<<<<<<<<<<<

reply: b'235 2.7.0 Authentication successful target host BLUPR04MB420.namprd04.prod.outlook.com\r\n'
reply: retcode (235); Msg: b'2.7.0 Authentication successful target host BLUPR04MB420.namprd04.prod.outlook.com'
send: 'mail FROM:<oalite@xxx.com> size=943\r\n'
reply: b'250 2.1.0 Sender OK\r\n'
reply: retcode (250); Msg: b'2.1.0 Sender OK'
send: 'rcpt TO:<user.foo@xxx.com>\r\n'
reply: b'250 2.1.5 Recipient OK\r\n'

请注意,我使用的是Microsoft的企业电子邮件帐户,域名xxx.com实际上是我们公司的域名。

我不知道为什么需要15秒进行身份验证,使用具有相同帐户的Outlook桌面应用程序发送电子邮件的速度非常快。使用Exchange协议然后使用SMTP协议会更快吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在身份验证缓慢时,从视图快速发送外发邮件的几个选项:

  • 使用celery卸载发送到离线任务的邮件。
  • 在主机上安装本地(转发)邮件服务器。在Linux上,这可以通过postfix轻松完成。您可以配置邮件服务器以连接到您的企业电子邮件帐户。
  • 两者: - )

似乎有REST API to connect to outlook.com - 因此您也可以编写your own mail backend来通过HTTP发送邮件。