Der*_*rek 145 python email django smtp
在我settings.py,我有以下内容:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
Run Code Online (Sandbox Code Playgroud)
我的邮箱代码:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()
Run Code Online (Sandbox Code Playgroud)
当然,如果我通过设置调试服务器python -m smtpd -n -c DebuggingServer localhost:1025,我可以看到终端中的电子邮件.
但是,我如何实际将电子邮件发送到调试服务器而不是user@gmail.com?
在阅读完答案后,让我直截了当:
你不能使用localhost(简单的ubuntu pc)发送电子邮件吗?
我认为django 1.3 send_mail()有点弃用,EmailMessage.send()而是用来代替?
Jor*_*dan 162
我使用Gmail作为Django的SMTP服务器.比处理postfix或其他任何服务器容易得多.我不是在管理电子邮件服务器.
在settings.py中:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)
注意:2016年,Gmail不再允许此操作.您可以使用Sendgrid等外部服务,也可以按照Google提供的本教程降低安全性,但允许使用此选项:https://support.google.com/accounts/answer/6010255
Ign*_*ams 52
将电子邮件发送到真正的SMTP服务器.如果您不想自己设置,那么您可以找到可以为您运行的公司,例如Google自己.
Ale*_*lig 34
django-admin.py startproject gmail使用以下代码编辑settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'youremail@gmail.com'
EMAIL_HOST_PASSWORD = 'email_password'
EMAIL_PORT = 587
Run Code Online (Sandbox Code Playgroud)运行交互模式: python manage.py shell
导入EmailMessage模块:
from django.core.mail import EmailMessage
Run Code Online (Sandbox Code Playgroud)发送电子邮件:
email = EmailMessage('Subject', 'Body', to=['your@email.com'])
email.send()
Run Code Online (Sandbox Code Playgroud)欲了解更多信息,请检查send_mail并EmailMessage在功能的文件.
Gmail更新
此外,如果您通过Gmail发送电子邮件时遇到问题,请记得从谷歌查看此指南.
在您的Google帐户设置中,转到 Security > Account permissions > Access for less secure apps并启用此选项.
在为其启用两步验证后,还要为您的Gmail建立一个应用专用密码.
然后,您应该在设置中使用应用专用密码.因此,请更改以下行:
EMAIL_HOST_PASSWORD = 'your_email_app_specific_password'
Run Code Online (Sandbox Code Playgroud)
此外,如果您有兴趣发送HTML电子邮件,请查看此信息.
小智 13
我的网站托管在Godaddy上,我在同一个网站上注册了私人电子邮件.这些设置对我有用:
在settings.py中:
EMAIL_HOST = 'mail.domain.com'
EMAIL_HOST_USER = 'abc@domain.com'
EMAIL_HOST_PASSWORD = 'abcdef'
DEFAULT_FROM_EMAIL = 'abc@domain.com'
SERVER_EMAIL = 'abc@domain.com'
EMAIL_PORT = 25
EMAIL_USE_TLS = False
Run Code Online (Sandbox Code Playgroud)
在shell中:
from django.core.mail import EmailMessage
email = EmailMessage('Subject', 'Body', to=['def@domain.com'])
email.send()
Run Code Online (Sandbox Code Playgroud)
然后我得到"1"作为O/P即成功.我也收到了邮件.:)
Cog*_*cis 13
对于Django 1.7版,如果以上解决方案不起作用,请尝试以下方法
在settings.py中添加
#For email
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sender@gmail.com'
#Must generate specific password for your app in [gmail settings][1]
EMAIL_HOST_PASSWORD = 'app_specific_password'
EMAIL_PORT = 587
#This did the trick
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Run Code Online (Sandbox Code Playgroud)
最后一行为django 1.7做了诀窍
小智 10
您需要在settings.py中使用smtp作为后端
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
如果您使用后端作为控制台,您将在控制台中收到输出
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
另外还有以下设置
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'urusername@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)
如果您使用gmail,请设置两步验证和特定于应用程序的密码,并将该密码复制并粘贴到上面的EMAIL_HOST_PASSWORD值中.
我发现使用 SendGrid 是使用 Django 设置发送电子邮件的最简单方法。这是它的工作原理:
settings.py:
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = '<your sendgrid username>'
EMAIL_HOST_PASSWORD = '<your sendgrid password>'
EMAIL_PORT = 587
EMAIL_USE_TLS = True你已经准备好了!
发送电子邮件:
from django.core.mail import send_mail
send_mail('<Your subject>', '<Your message>', 'from@example.com', ['to@example.com'])
Run Code Online (Sandbox Code Playgroud)
如果您希望 Django 在出现 500 内部服务器错误时向您发送电子邮件,请将以下内容添加到您的settings.py:
DEFAULT_FROM_EMAIL = 'your.email@example.com'
ADMINS = [('<Your name>', 'your.email@example.com')]
Run Code Online (Sandbox Code Playgroud)
使用 SendGrid 发送电子邮件每月最多可免费发送 12k 封电子邮件。
| 归档时间: |
|
| 查看次数: |
156610 次 |
| 最近记录: |