您是否曾经在Django项目中设置电子邮件集成方面曾努力?无论是配置SMTP设置,处理安全问题还是自动联系表格,电子邮件功能对于用户参与和信任至关重要。
>在本教程中,我们将介绍如何使用Django使用DJANGO进行实用,分步说明。我们将介绍如何配置Django SMTP连接,如何为您的电子邮件提供商设置密码以及如何通过Django Shell发送电子邮件。我们还将查看如何为您的Django应用程序设置联系表格,这将使您的客户可以与您联系。
钥匙要点 gmail发送限制的更多信息,或者参考电子邮件提供商的局限 注意:本教程的完整代码可在GitHub上找到。 > SMTP(或简单的邮件传输协议)是确定如何从发件人传输到收件人的一组规则。 SMTP服务器使用此协议发送和继电器传出电子邮件。 (请注意,其他协议控制电子邮件的收到>。
> SMTP服务器始终具有发送消息的唯一地址和一个特定端口,在大多数情况下是587。我们将在Django电子邮件发送中查看该端口的相关。
>每个Django项目都应该具有虚拟环境,因为我们不想弄乱项目依赖项。要创建一个,请运行以下内容: 注意:如果您不熟悉虚拟环境,请确保检查我们的 。
>上面的命令创建了一个具有名称.venv的虚拟环境。要激活此虚拟环境,您可以使用以下内容:>
>由于Django是第三方包,您必须使用PIP安装它: 要创建一个Django项目,您可以调用命令行实用程序Django-admin: >使用上面的命令,您正在创建一个带有emailProject的Django项目,但是您可以使用任何想要的名称创建项目。现在,输入到项目目录并运行服务器:
>在发送电子邮件之前,您需要修改设置文件,因此,让我们使用以下命令找到该文件: 树命令输出目录的文件结构。在这种情况下,由于我们没有给它一个特定的目录路径,因此,如果我们在项目的根文件夹中,我们将获得类似的内容: >让我们看一下与Django发送电子邮件所需的设置。打开emailProject/settings.py文件并将以下设置粘贴到文件底部: >让我们通过分析这些设置中的每一个来分解上述代码。 email_backend设置声明后端我们的django项目将用于与SMTP服务器连接。 注意:尽管此类是默认的email_backend,但在DJANGO设置中被认为是一个好习惯。
>电子邮件主机
> email_host设置是指您将使用的SMTP服务器域。这取决于您的电子邮件提供商。下面是一张带有SMTP服务器主机的表,该表与三个普通提供商相对应: 电子邮件提供者 gmailsmtp.gmail.com.outlook/hotmailsmtp-mail.outlook.utlook.comyahoosmtp.mail.yahoo.com >传输层安全性(TLS)是在网络上使用的安全协议,用于加密Web应用程序(DJANGO)和服务器(SMTP服务器)之间的通信。
> email_host_user设置是您的个人电子邮件地址。现在将其留为空白,因为我们将使用django-environ来设置所有这些凭据。 > email_host_password设置是您从电子邮件帐户中获取的应用程序密码 - 本节之后我们将要进行的过程。同样的故事:将此设置留为空白,因为我们以后将使用环境变量。
为什么使用应用程序密码? 即使您只是在开发中发送电子邮件,也不应直接将密码写入源代码。当使用版本控制系统与GitHub一起托管您的项目时,这变得更加重要。 您不希望别人访问您的数据。 >让我们看看如何使用django-environ。
分解此文件的内容: > email_host:您的电子邮件提供商的SMTP服务器地址。请参阅上面的电子邮件主机表以获取快速指导。在这种情况下,我正在使用smtp.gmail.com,gmail smtp地址。
首先,我们在设置文件的顶部导入环境包。请记住,所有进口都应该在开始。然后,我们创建一个Env变量,该变量将包含.env。
> env('键')语句意味着我们正在查找该密钥的价值。在进行之前,请确保已设置.ENV文件。否则,如果未设置某些环境变量,您将获得DJANGO不正确配置的错误。 >
>
1。与Django Shell 一起发送电子邮件
>最后,我们进入了文章的多汁部分!是时候将您的第一封电子邮件发送到Django了。 打开一个终端,激活虚拟环境并运行: 我们还可以在不指定参数的情况下进行单线工作: 让我们分解上面的代码: 现在,如果我检查收件箱 - 当我将收件人_address环境变量设置为电子邮件地址时,我将获得Django发送的电子邮件。 >
>异步电子邮件发送在以下情况下很有用: >非阻止操作,发送电子邮件不应延迟用户请求。 >在本节中,我们将使用Django表单和内置的send_mail函数构建自动联系表格。我们还将在联系表格中创建一个自定义函数,send(),以便在视图中更容易实现。
然后,在emailProject/settings.py文件中将其安装在您的installed_apps变量中
>在使用联系人应用程序前进之前,让我们配置emailProject/urls.py文件内部的urlpatterns。为此,请导入django.urls.include函数,并在整个项目中包含联系URL。不用担心;我们稍后将配置联系URL: 触点表格
> django表单模块为我们提供了创建我们的联系表格的所有必要类和字段。我们再次导入设置对象和send_mail函数以发送电子邮件。 我们的联系表将包含几个字段,并使用两种自定义方法:get_info(),该方法格式化了用户提供的信息,并发送()将发送电子邮件。让我们看看这是在代码中实现的: 这个课程很大,所以让我们分解每个部分的工作。首先,我们定义了发送电子邮件的四个字段: 联系人视图 >打开Contact/views.py文件并添加以下导入: 基于类的视图
如您所见,我们正在使用我们创建的ContactForm构建一个简单的FormView。我们还将设置template_name和Success_url。我们将编写HTML模板并稍后设置URL。
>
上述form_valid方法实现在基于函数的视图中等效于以下内容: >结束本节,我们将编写ContactSucessView,该ContactSucessView将向用户显示成功消息。由于我们已经导入了TemplateView类,因此我们只需要从中继承并定义Template_name属性: >您可以在GitHub存储库上查看views.py文件,如果您有任何疑问。 是时候创建联系应用程序的URL模式了。由于django默认不给我们提供urls.py文件,因此我们需要使用以下命令来创建它(请确保在Contact App文件夹中):
>
> >
>写模板
base.html:所有其他模板都将从它继承。它将包含所有模板必须具有的HTML骨架,以及链接到Bootstrap。
>让我们跳入base.html模板的内容: >在进入表格之前,您需要安装Django脆皮表套件,这使我们可以轻松地对它们进行样式化: 再次,crispy_forms是一个django应用,我们需要将其包含在installed_apps列表中: 我们使用Bootstrap 4的模板包,因为Bootstrap表格类是第四版和第五版之间的兼容(在写作时)。 现在,让我们使用Contact.html模板: >
我们将使用脆皮模板标签呈现表单,这就是为什么我们用{%load load Crispy_forms_tags%}加载脆皮标签的原因。 最后,让我们写下成功。
>让我们再次运行服务器并访问http:// localhost:8000(请确保已激活.venv,并且您在项目root文件夹中):
>
的最佳实践
HTML电子邮件提供更好的设计和演示文稿。使用Django的模板引擎来创建丰富的电子邮件内容:
>在用户注册期间发送电子邮件验证链接以防止垃圾邮件帐户。
有很多方法可以与Django发送电子邮件。在本教程中,您已经与您的个人电子邮件地址一起完成了,但是我希望您探索其他工具并将其集成到您的项目中。 在本教程中,我们介绍了以下内容: 使用SMTP服务器发送电子邮件
>
>
在开发过程中,您可以使用可选的电子邮件后端来测试电子邮件,而无需连接到真正的SMTP服务器。例如:Console电子邮件后端:将电子邮件打印到终端而不是发送它们。 >要进行更高级的测试,请使用MailHog或MailTrap之类的工具,这些工具充当伪造的SMTP服务器,用于捕获和显示测试电子邮件。 >使用Django Environ从.ENV文件加载敏感凭据(例如电子邮件主机,用户名和密码):了解SMTP服务器和简单的邮件传输协议
python <span>-m venv .venv</span>
python虚拟环境指南<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
pip <span>install django</span>
django-admin startproject EmailProject
<span>cd EmailProject
</span>python manage.py runserver
>配置DJANGO电子邮件后端为SMTP电子邮件后端是与Django发送电子邮件的机制。默认情况下,django使用django.core.mail.backends.smtp.emailbackend,它允许其连接到SMTP服务器并发送电子邮件。根据环境(开发或生产),您可以选择其他电子邮件后端以适合您的需求。
python <span>-m venv .venv</span>
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
我们将在本教程中不断修改的文件是EmailProject文件夹中的设置。它持有您需要的所有项目配置,并允许您设置自定义变量。正如Django文档所说,“设置文件只是具有模块级变量的Python模块”。
pip <span>install django</span>
>
>>电子邮件端口
> email_port设置必须设置为587,因为它是大多数SMTP服务器的默认端口。个人电子邮件提供商仍然如此。该端口与TLS加密一起使用,以确保发送电子邮件的安全性。 电子邮件使用tls
>电子邮件主机用户
电子邮件主机密码
python <span>-m venv .venv</span>
> yahoo配置:<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
>使用应用程序密码设置Gmail SMTP服务器
>由于Google将“较不安全的应用程序”弃用,因此连接到Gmail帐户发送电子邮件的正确和安全方法是使用应用程序密码。仅当您为Google帐户启用2步验证时,应用程序密码才能可用。
>
安全替代方案:App密码不是共享主密码,而是为特定应用程序提供有限的访问。>使用SMTP:APP密码符合Gmail的SMTP访问的安全要求。
访问您的Google帐户:https://myaccount.google.com/。
导航到左侧菜单中的安全性。
>启用了2步验证后,在搜索栏中搜索“应用程序密码”。
在那里,输入应用程序密码的名称,然后单击“创建”。
>
使用Django Environ来保护电子邮件后端凭据
python <span>-m venv .venv</span>
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
注意:确保您的虚拟环境已激活。>
pip <span>install django</span>
现在,打开位于emailProject目录中的设置。
django-admin startproject EmailProject
<span>cd EmailProject
</span>python manage.py runserver
>这将创建一个已经为我们配置的所有Django设置创建一个外壳。在那个全新的外壳中,粘贴以下代码:>
python <span>-m venv .venv</span>
>
>异步电子邮件发送
>
这是您可以异步发送电子邮件的方法:<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
构建自动触点表格
>让我们从创建联系应用程序开始。输入项目根目录(Manage.py所在的位置)并运行:
>
pip <span>install django</span>
django-admin startproject EmailProject
>输入联系人应用程序文件夹并创建一个forms.py文件。最好在forms.py文件中定义您的所有表格,这是一个很好的做法,但这不是强制性的。这就是为什么Django默认不包含此文件的原因。您可以使用以下命令来创建表单文件:python <span>-m venv .venv</span>
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
>
>另外,我们正在导入上一节中构建的联系人和使用pip <span>install django</span>
>
python <span>-m venv .venv</span>
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
联系URL
pip <span>install django</span>
打开该文件并设置app_name和urlpatterns变量:django-admin startproject EmailProject
>我们使用路径将路由及其通讯视图包括在应用程序的URL配置中。当我们将app_name变量设置为“联系”时,这意味着该应用程序的URL<span>cd EmailProject
</span>python manage.py runserver
>您可以在官方文档中了解有关Django URL调度程序的更多信息。>
tree
├── EmailProject
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 6 files
<span># EmailProject/settings.py
</span>
<span># Bottom of the file
</span>EMAIL_BACKEND <span>= 'django.core.mail.backends.smtp.EmailBackend'
</span>EMAIL_HOST <span>= ''
</span>EMAIL_PORT <span>= 587
</span>EMAIL_USE_TLS <span>= True
</span>EMAIL_HOST_USER <span>= ''
</span>EMAIL_HOST_PASSWORD <span>= ''
</span>
python <span>-m venv .venv</span>
请注意我们如何扩展基本模板并利用块占位符。这就是使Django模板语言如此高效的原因,因为它使我们可以节省大量的HTML复制和粘贴。<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
下图显示了最终触点表格的外观。pip <span>install django</span>
这是成功消息的图像。
>使您的电子邮件订阅逻辑模块化和可重复使用,您可以将电子邮件发送功能移动到辅助功能:
>现在,您可以在需要发送电子邮件(包括您的联系表格)的任何地方调用此功能。
2。单元测试
您可以使用django.test进行测试发送电子邮件django功能。django-admin startproject EmailProject
3。发送丰富的HTML电子邮件
4。集成第三方电子邮件服务<span>cd EmailProject
</span>python manage.py runserver
5。用户注册中的电子邮件验证
tree
总结
恭喜!您已经学会了如何与Django一起发送电子邮件以及如何构建Django联系表。
DJANGO上的FAQS
是的,Django提供了一个内置的电子邮件待发送框架,该框架使发送电子邮件变得容易。通过在设置中配置SMTP设置。Py文件,您可以使用send_mail函数或emailmessage类发送电子邮件。
如何在django中发送电子邮件?
Set the SMTP details in your settings.py file:EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your_email@example .com'email_host_password ='your_app_password'>
>配置您的传入电子邮件服务器设置。通常,您需要电子邮件提供商的IMAP(Internet消息访问协议)服务器详细信息以及身份验证凭据。接下来,使用iMaplib库连接到您的电子邮件服务器并检索电子邮件。您可以在Django视图或自定义管理命令中执行此操作。获取电子邮件后,您可以在Django应用程序中进行处理,提取信息并执行任何必要的操作。这可能涉及解析电子邮件内容,将相关数据存储在数据库中,或者基于电子邮件的内容或发件人触发特定操作。>
我如何在不发送真实电子邮件的情况下测试发送django的电子邮件?python <span>-m venv .venv</span>
我如何安全地管理敏感电子邮件凭据?
>
以上是如何使用SMTP服务器向Django发送电子邮件的详细内容。更多信息请关注PHP中文网其他相关文章!