为什么SMTP sendmail在我的开发服务器Django 1.6中在本地运行速度很快但速度很慢

时间:2014-06-18 13:32:33

标签: django email python-2.7 sendmail

我在项目中使用SMTP sendmail并尝试使用SMTP sendmail发送邮件。它工作正常,并在3-4秒内发送邮件。但是相同的代码在开发服务器中需要大约5分钟。你能帮我么。

在我的视图功能

def send_email(subject, message, recipients, contenttype, attachments = []):
    try:
        from_email = "gauravnagpal2002@gmail.com"

        msg = MIMEMultipart()
        msg['Subject'] = subject
        msg['From'] = from_email
        msg['To'] = ",".join(recipients)
        msg.attach( MIMEText(message) )

        for f in attachments:
            part = MIMEBase('application', "octet-stream")
            part.set_payload( open(f,"rb").read() )
            Encoders.encode_base64(part)
            part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
            msg.attach(part)        

        server = smtplib.SMTP('localhost')
        server.sendmail(from_email, recipients, msg.as_string())
        server.quit()
    except Exception, e:
        logger.error(str(e)) 

任何人都可以帮我弄清楚我做错了吗?

2 个答案:

答案 0 :(得分:0)

为什么不使用django内置电子邮件,

使用以下代码修改settings.py:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'youremail@gmail.com'
EMAIL_HOST_PASSWORD = 'yourpassword'
EMAIL_PORT = 587

运行交互模式,python manage.py shell 导入EmailMessage模块,

from django.core.mail import EmailMessage
# Send the email,

email = EmailMessage('Subject', 'Body', t=['mickeyckm@mangooranges.com'])
email.save()

答案 1 :(得分:0)

我猜这可能不是django问题(或者是python问题,因为你并没有使用django实际发送你的电子邮件)。我之前没有在hosts文件中包含我的服务器的完全限定名称,因此我遇到了类似的问题。

打开/ etc / hosts并确保服务器的完全限定域名映射到环回地址(127.0.0.1)。

如果这是您唯一的网络服务器(类似这样的话)

127.0.0.1 localhost your.servers.fully.qualified.domain.com

真的,但是..我们需要更多信息来帮助你。如果您尝试此解决方案(确保重新启动sendmail守护程序)并且您仍然遇到问题,请打开sendmail的日志(如果您在ubuntu上,它会在某个地方/var/log/mail.log)并查看调用sendmail时的日志条目,然后使用相关日志条目更新您的问题。

另见:

https://superuser.com/questions/626205/sendmail-very-slow-etc-hosts-configuration/626219#626219

https://www.digitalocean.com/community/questions/sendmail-is-slow-to-send-mail