我在项目中使用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))
任何人都可以帮我弄清楚我做错了吗?
答案 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