使用Django发送Gmail

时间:2017-10-18 19:59:34

标签: python django python-2.7 dns django-email

这可能是一个重复的问题,但其他明显重复的问题都没有解决我的问题:

这是一个继承的项目。

我的settings.py包括:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'my_username@gmail.com'
EMAIL_HOST_PASSWORD = 'my_password'
EMAIL_PORT = '587'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'my_username@gmail.com'
DEFAULT_FEEDBACK_EMAIL = 'my_username@gmail.com'
SERVER_EMAIL = 'my_username@gmail.com'
ACCOUNT_EMAIL_VERIFICATION = 'none'

我尝试运行的代码是:

subject = 'Subject'
template = get_template('accounts/email-templates/email-activation.html').render(Context(ctx))
email = EmailMessage(subject, template, to=[send_to])
        email.content_subtype = "html"
try:
   email.send()

使用python manage.py shell重复尝试时出现错误:

gaierror: [Errno 8] nodename nor servname provided, or not known

我的dns似乎很好,sudo killall -HUP mDNSResponderdscacheutil -flushcache已经运行没有成功,但我几乎不是dns设置的专家。 我的主机文件是:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

建议赞赏!

2 个答案:

答案 0 :(得分:0)

您可能需要在Gmail中生成应用密码或将设置更改为allow less secure access。我不认为Gmail会允许您只使用常规密码 - 谷歌会考虑 - 这是一种不安全的方式。

答案 1 :(得分:0)

我在使用Gmail发送邮件方面遇到了类似的问题。

仅尝试使用以下代码发送电子邮件。希望它有所帮助:

  

在settings.py中

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = "sender_email@gmail.com"
EMAIL_HOST_PASSWORD = "email_password"
EMAIL_PORT = 0
EMAIL_USE_TLS = True
  

发送电子邮件的代码:

# Imports for sending emails:
from django.conf import settings
from django.core.mail import EmailMultiAlternatives, send_mail

emailFrom = [settings.EMAIL_HOST_USER]
emailTo = email_here
text_content = 'Your content here'
email_subject = "Subject here"
msg = EmailMultiAlternatives(email_subject, text_content, emailFrom, [emailTo], )
msg.send()

同时更改“发件人Gmail帐户”中的settings,以创建邮件从发件人发送到收件人的段落。希望这会有所帮助。