Django使用SMTP发送邮件教程

news2024/10/6 6:53:12

CONTENTS

    • 1. SMTP介绍
    • 2. 申请邮箱授权码
    • 3. Django发送邮件

1. SMTP介绍

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP 协议所指定的服务器,就可以把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出的电子邮件。

一个 SMTP 服务器总是有一个独特的地址,和一个用于发送邮件的特定端口,在大多数情况下是587。本文以使用 QQ 邮箱为例,因此我们将使用的地址是 smtp.qq.com,端口号是587。

2. 申请邮箱授权码

首先我们需要启用 QQ 邮箱的 SMTP 服务,并申请一个授权码,打开邮箱网页,然后在“设置-账号”选项卡中找到 SMTP 服务部分,点击开启服务:

在这里插入图片描述

进行相关的身份验证后会收到一串授权码如下:

在这里插入图片描述

3. Django发送邮件

首先在项目的 settings.py 文件中添加配置信息:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = '******@qq.com'
EMAIL_HOST_PASSWORD = '******'

RECIPIENT_ADDRESS = ['******@qq.com']

配置参数说明如下:

  • EMAIL_BACKEND:声明了我们的 Django 项目将用于连接 SMTP 服务器的后端。这个变量指向 smtp.EmailBackend 类,该类接收发送邮件所需的所有参数。虽然这个类是默认的 EMAIL_BACKEND,但在 Django 的设置中明确定义被认为是一个好的做法。
  • EMAIL_HOST:将要使用的 SMTP 服务器域,取决于你的电子邮件提供商。常用的有:smtp.qq.comsmtp.163.comsmtp.gmail.com 等。
  • EMAIL_PORT:SMTP 服务器端口号,587是大多数 SMTP 服务器的默认端口,对于个人电子邮件提供商来说,这一点仍然适用。
  • EMAIL_USE_TLS:TLS(Transport Layer Security,传输层安全协议),用于在两个应用程序之间提供保密性和数据完整性。在此处用于加密网络应用程序(Django)和服务器(SMTP 服务器)之间的通信。
  • EMAIL_HOST_USER:主机用户(发件人邮箱),设置是你的个人电子邮件地址。
  • EMAIL_HOST_PASSWORD:发件人的授权码,即从你的电子邮件帐户获得的应用程序密码。
  • RECIPIENT_ADDRESS:收件人邮箱列表。

现在假设我们的前端发来如下请求:

$.ajax({
    url: 'http://localhost:8000/sendemail/',
    type: 'GET',
    data: {
        message: message,
    },
    dataType: 'json',
    success: (resp) => {
        ...
    }
});

然后我们需要在后端接收 message,并将其通过邮件(django.core.mail.send_mail 函数)发送给自己(即 settings 中的 EMAIL_HOST_USER 为自己的邮箱,RECIPIENT_ADDRESS 列表中也仅有一个自己的邮箱):

from django.http import JsonResponse
from django.core import mail
from django.conf import settings

def sendEmail(request):
    data = request.GET
    message = data.get('message', '').strip()  # 如果没有的话返回空,且过滤掉空格

    if message:
        mail.send_mail(
            subject='在线计算器与编译器项目用户反馈',  # 题目
            message=message,  # 消息内容
            from_email=settings.EMAIL_HOST_USER,  # 发送者
            recipient_list=settings.RECIPIENT_ADDRESS,  # 接收者邮件列表
        )

    return JsonResponse({
        'result': 'success',
    })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fiddler 的用法

使用fiddler进行抓包 举例一些常见的代理工具 1.wireshark:功能非常强大,但是使用起来更复杂一些 2.fiddler:功能虽然比wireshark少,但是使用简单方便,功能也足以应付大部分场景了 安装了fiddler之后,http和https的请求和响应都会被抓包工具捕捉到,其他的不会 打开软件,左侧是…

网络安全:六种常见的网络攻击手段

1、什么是VPN服务? 虚拟专用网络(或VPN)是您的设备与另一台计算机之间通过互联网的安全连接。VPN服务可用于在离开办公室时安全地访问工作计算机系统。但它们也常用于规避政府审查制度,或者在电影流媒体网站上阻止位置封锁&#…

mybatis:mybatis-generator插件使用

mybatis:mybatis-generator插件使用 1 idea配置 idea,点击File->Settings->Plugins->设置,点击:Manage Plugin Repositories: 配置如下: http://plugins.jetbrains.com/下载插件并重启idea: 2 …

Avalonia环境搭建

1.开发文档 开发文档, GitHub项目地址 https://github.com/avaloniaui/avalonia 2.VS2022 及扩展安装 建议使用vs2022最新版本下载并安装扩展Avalonia for Visual Studio 2022 3.安装Avalonia UI模板 dotnet new install Avalonia.Templates 查看安装版本 dot…

3 个令人惊艳的 AI 文档神器,开源了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 现今的互联网时代,无论哪个行业,在日常各种工作的沟通协作中,我们都免不了要与各种文档打交道。 但是,人的精力与任务处理速度毕竟有限&…

WinApp自动化测试之工具的选择

WinApp(Windows APP)是运行在Windows操作系统上的应用程序,通常会提供一个可视的界面,用于和用户交互。 例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome,都属于WinApp。常见的WinA…

8. Java本项目知识基础---下篇

Java本项目知识基础—下篇 1. String 拼接字符串 进行头部、中部、尾部拼接 (简单、内存占用大) StringBuffer或StringBuilder进行append拼接(复杂、内存占用小) public static void main(String[] args) {String str "abc…

Z410 2023款无人机,专为零基础开发者打造的入门级开源无人机

为什么开发Z410升级款-Easydrone无人机 新手开发者通常在本科阶段加入人工智能行业,对无人机二次开发往往一知半解,面临着C、Python、ROS和mavlink等一系列入门知识,学习起来非常困难,学习的过程中也面临许多挫折。为了帮助零基础…

vcruntime140.dll缺失如何修复,vcruntime140.dll重新安装方法分享

大家好!今天,我非常荣幸能够站在这里,与大家分享关于vcruntime140.dll丢失的问题以及三种修复方法。希望通过我的演讲,能够帮助到在座的各位,解决我们在使用电脑过程中遇到的一些问题。 首先,让我们来了解一…

京东数据分析平台:9月中上旬白酒消费市场数据分析

9月份,围绕白酒的热点不断。9月5日,瑞幸咖啡官微发布消息称,瑞幸与贵州茅台跨界合作推出的酱香拿铁刷新单品纪录,首日销量突破542万杯,销售额破1亿元。9月14日,贵州茅台官微发布消息称与德芙推出联名产品“…

VMProtect使用教程(VC++MFC中使用)

VMProtect使用教程(VCMFC中使用) VMProtect是一种商业级别的代码保护工具,可以用于保护VC MFC程序。以下是使用VMProtect保护VC MFC程序的步骤: 1. 下载并安装VMProtect,C包含库及目录。 2. 在VC MFC项目中添加VMProtectSDK.h头文件,并在需…

Spring Boot如何配置CORS支持

Spring Boot如何配置CORS支持 CORS(跨源资源共享)是一种Web浏览器的安全性功能,用于控制网页上的脚本文件从不同的源加载其他网页资源。在开发现代Web应用程序时,通常需要跨域请求不同的资源,如API服务或其他Web应用程…

STM32CubeMX学习笔记-RTC实时时钟使用

STM32CubeMX学习笔记-RTC实时时钟使用 一、RTC简介二、新建工程三、RTC3.1 选择时钟3.3 生成代码3.5 添加读取时间函数 原创链接 1 一、RTC简介 实时时钟(RTC) 是一个独立的 BCD 定时器/计数器。 RTC 提供具有可编程闹钟中断功能的日历时钟/日历。RTC 还…

java开源商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

flume安装

安装之前要先注意一下版本兼容,就是jdk的版本与flume的版本 下载flume压缩包 Index of /dist/flume (apache.org)https://archive.apache.org/dist/flume/然后解压到一个目录,以/opt/moudle为例 进入/opt/moudle/apache-flume-1.9.0-bin/conf cp flume-env.sh.template flu…

SM5401是一款锂电池电源管理芯片

简介: SM5401 是一款集成锂电池充电管理, LED 指示功能,升压转换器的移动电源管理芯片,外围只需极少的元件,就可以组成功能强大的移动电源方案。 SM5401 内部集成了 0.8A 的线性充电模式,支持对 0V 电池充电…

第八章 排序 八、堆的插入与删除

一、插入元素 二、删除元素 1、删除元素13,将堆底元素填充到空处 2、为满足小根堆的特性,要让46不断下坠 三、总结

紧固行业内卷严重,张友君的飞沃科技能独善其身吗?

文|新熔财经 作者|文泽 “历经转折”的飞沃科技(301232.SZ)于今年6月,登陆资本市场。 公开资料显示,飞沃科技主要从事风电类高强度紧固件业务,主要产品包括预埋螺套、整机螺栓、锚栓组件。公司的实际控制人是张友君…

mysql-执行计划

1. 执行计划表概述 id相同表示加载表的顺序是从上到下。 id不同id值越大,优先级越高,越先被执行。id有相同,也有不同,同时存在。 id相同的可以认为是一组,从上往下顺序执行;在所有的组中,id的值…

移远通信5G RedCap模组现网实测再获新成果!携手行业伙伴加速5G产业成熟发展

近日,移远通信联合中国移动、爱立信、高通等产业链合作伙伴,在湖南岳阳5G现网中成功完成了基于5G RedCap 模组,开展的行业首个连接建立、数据传输、语音通话等功能测试。这也意味着,移远通信在推动RedCap产业成熟与应用落地上&…