如何在django中设置发送邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在django中设置发送邮件相关的知识,希望对你有一定的参考价值。
参考技术A """setting 配置文件""" gmail默认端口是25EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = '587'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
UserEmail=''
EMAIL_USE_TLS = True
"""调用django email方法"""
targetEmails 可以是一个email 也可以是多个 targetEmails 为一个list
send_mail(unicode('标题',"GBK"),unicode(content,"GBK"),setting.UserEmail, targetEmails,fail_silently=True)
如何使用 django-rest-auth 和 Mailgun 从 Django 发送密码重置电子邮件
【中文标题】如何使用 django-rest-auth 和 Mailgun 从 Django 发送密码重置电子邮件【英文标题】:How to send password reset email from Django using django-rest-auth and Mailgun 【发布时间】:2019-05-26 13:38:51 【问题描述】:我正在使用 Django rest auth 在 Django 中设置用户身份验证。大多数事情都运行良好,但我无法在虚拟后端或 Mailgun 中发送要发送的密码重置电子邮件。
我按照this tutorial 设置了基本身份验证。教程中的所有内容都很好用,但没有说明如何重置密码。
我有一个 Mailgun 帐户,我正在尝试使用沙盒发送邮件。
# api/urls.py
from django.urls import include, path
urlpatterns = [
path('rest-auth/', include('rest_auth.urls')),
path('rest-auth/registration/', include('rest_auth.registration.urls')),
path('users/', include('users.urls')),
]
我正在通过可浏览的 API 表单为注册用户请求重置密码:http://127.0.0.1:8000/api/v1/rest-auth/password/reset/
我在表格中输入一个电子邮件地址,然后按“POST”。页面显示如下:
POST /api/v1/rest-auth/password/reset/
HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept
"detail": "Password reset e-mail has been sent."
但是邮件没有发送!
mailgun 日志显示没有任何活动 - 没有发送电子邮件。
当我在浏览器中查看“网络”选项卡时,没有看到发布请求。
这是我使用 Mailgun 的设置:
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'postmaster@sandboxxxxx.mailgun.org'
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_TLS = True
(我已经将我的真实沙箱和密码放在实际文件中)
首先,在 settings.py 中使用这个:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
我希望将电子邮件文本记录到使用 .'/manage.py runserver 运行服务器的终端。但是没有任何记录。
然后,在 settings.py 中使用这个:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
我希望 Mailgun 发送电子邮件。
我错过了什么明显的蠢事?
我认为 Django rest auth 包含一个默认的电子邮件模板,所以我不应该手动创建它吗?
我需要为http://127.0.0.1:8000/api/v1/rest-auth/password/reset/ 的管理页面做些额外的事情吗? http://127.0.0.1:8000/api/v1/rest-auth/login/ 工作正常,我可以登录并看到我的令牌从服务器返回。
非常感谢任何想法!
【问题讨论】:
您输入的电子邮件地址似乎不存在。 (是的,在这种情况下,响应仍然说发送了一封电子邮件。)您能否确认该电子邮件地址存在于用户模型和EmailAddress
模型中?
谢谢!但我认为问题在于 POST 请求甚至没有发送到服务器。我已经按照不同的说明从头开始重建了该应用程序几次,现在可以正常工作了。我认为为什么它以前不起作用将仍然是一个谜......
【参考方案1】:
我对此没有很好的答案,但我放弃了使用 django-rest-auth 进行密码重置,而是改用 django-contrib-auth url 和模板。这与我的 React 前端不完全匹配,但至少它提供了用户功能。
【讨论】:
以上是关于如何在django中设置发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 django-rest-auth 和 Mailgun 从 Django 发送密码重置电子邮件
如何在网页中设置一个链接直接跳转到OUTLOOK然后发送邮件
在 Laravel 中发送电子邮件后在表格中设置“状态 = 已发送”