【问题标题】:It's slow to send email by the default EmailBackend of django 1.11 using Microsoft business email accountdjango 1.11默认EmailBackend使用微软企业邮箱发送邮件很慢
【发布时间】:2023-03-05 04:40:01
【问题描述】:

我使用的是 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'

请注意,我使用的是微软的企业邮箱,域名xxx.com实际上是我们公司的域名。

我不知道为什么需要 15 秒才能进行身份验证,使用 Outlook 桌面应用程序以相同的帐户发送电子邮件非常快。使用 Exchange 协议比使用 SMTP 协议快吗?

感谢您的帮助!

【问题讨论】:

  • 你的问题是什么?为什么这么慢?你能做些什么呢?微软服务的身份验证目前显然需要 15 秒...... :) 您的问题似乎包括您当前的密码 base64 编码 - 这是一个坏主意,因为人们可以轻松解码它。您应该删除这部分并更改密码。
  • @dahrens 感谢您的建议,我已经修改了我的问题。密码和电子邮件地址是伪造的 :P 所以在 SMTP 协议下验证我的帐户需要 15 秒是正常的吗?还是我错过了一些加快身份验证过程的东西?

标签: django email smtplib


【解决方案1】:

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

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

似乎有一个REST API to connect to outlook.com - 所以你也可以写your own mail backend 来通过HTTP 发送邮件。

【讨论】:

  • 感谢您的建议,我会尝试您提到的方法! REST API 也很慢,除了交换协议外,从中国连接到微软服务总是很慢。
  • 我安装了Postfix来转发邮件,现在很快,非常感谢!
猜你喜欢
  • 2013-02-27
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2018-10-19
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
相关资源
最近更新 更多