首页 > 其他分享 >28、Django-发送邮件

28、Django-发送邮件

时间:2024-07-09 22:42:22浏览次数:15  
标签:协议 settings Django 28 django import csv 邮件

SMTP全称是(Simple Mail Transfer Protocol)即简单邮件传输协议(端口是25)
  - 他是一组用于从源地址到目的地址传输邮件的规范、通过它来控制邮件的中转
    - 属于推送协议 - 负责发送
    
IMAP-邮件相关协议(Internet Mail Access Protocol)即交互式邮件访问协议、是一个应用层协议、端口是143
  - 用来从本地邮件客户端(Outlook Exporess、Foxmail、Mzzilla Thunderbird)访问远程服务器上的邮件
    - 属于拉取协议 - 负责收邮件
    
POP3-邮件相关协议(Post Office Protocol 3)即邮件协议的第三个版本、是TCP/IP协议族中的一员、端口是110
  - 本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
    - 属于拉取协议 - 负责收邮件
    
    
IMAP和POP3都属于拉取型协议、负责从邮件服务器中下载邮件
 - IMAP具有摘要浏览器的功能、可预览部分摘要、再下载整个邮件
  - IMAP为双向协议、客户端操作可反馈给服务器
 - POP3必须下载全部邮件、无摘要功能
  - POP3为单向协议、客户端操作无法同步服务器

 

 

 

生成QQ邮箱的授权码:

 

邮箱的配置
setting.py
-------------------------------------------
#邮箱配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'   # 发送邮件后端配置、邮件引擎
EMAIL_HOST = 'smtp.qq.com'      # 发送邮件服务器: smtp.qq.com,
EMAIL_PORT = 587               #发送邮件端口,端口号465或587
EMAIL_HOST_USER = '[email protected]'    # 发件人邮箱
EMAIL_HOST_PASSWORD = 'sszcuxnizxxx'   # 授权码
EMAIL_USE_TLS = False    # 是否使用TLS加密,qq邮箱需要使用
--------------------------------------------------------

中间件
emilmiddleware.py
------------------------------------------------------
import traceback

from django.core import mail
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
from django.conf import settings

class ExceptionMW(MiddlewareMixin):
    def process_exception(self, request, exception):
        print(exception)

        print(traceback.format_exc())
        mail.send_mail(subject='异常信息', message=traceback.format_exc(), from_email='[email protected]', recipient_list=settings.EX_MAIL)
        return HttpResponse('-- 当前网页有点忙 ---')
    
------------------------------------------------------------------
views.py
----------------------------------------------
# Create your views here.

#访问http://127.0.0.1:8000/test_csv
#自动下载test.csv文件
def test_csv(request):

    # 创建响应对象 、设置响应类型
    response = HttpResponse(content_type='text/csv') # Content-Type、修改响应头
    ##添加特殊的响应头、只要有这个响应头浏览器就会弹出下载
    #attachment: 是告诉浏览器,这个文件要下载下来
    #filename: 是告诉浏览器,文件名是什么
    response['Content-Disposition'] = 'attachment; filename="test.csv"'

    all_data = ['a', 'b', 'c', 'd'] # 所有数据
    # 创建csv写入对象
    writer = csv.writer(response)
    writer.writerow(all_data)   # 写入数据

    return response


from upload_app import models
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
#文件上传
def upload_file(request):
    if request.method == 'GET':
        a        #制造错误
        return render(request, 'upload_file.html')

------------------------------------------------------

urls.py
--------------------------------
from django.contrib import admin
from django.urls import path
from download_csv import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test_csv/', views.test_csv),
    path('upload_file/', views.upload_file),
]

# 配置静态文件、媒体文件
#settings.MEDIA_URL:媒体文件访问路径
#settings.MEDIA_ROOT:媒体文件保存路径
#static():将媒体文件映射到访问路径
#当文件上传到服务器时,会自动将文件保存到MEDIA_ROOT指定的路径下
#访问图片:http://127.0.0.1:8000/media/picture/111.png
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
---------------------------------------------------------------

 

标签:协议,settings,Django,28,django,import,csv,邮件
From: https://www.cnblogs.com/littlecc/p/18209418

相关文章

  • 27、Django-文件上传
    上传规范:1、文件上传必须为POST提交方式2、表单'<form>'中文件上传时必须带有enctype="multipart/form-data"时才会有包含文件内容的数据3、表单中用<inputtype="file"name="xxx">标签上传文件#在视图函数中-用request.FILES取文件框的内容-file=request.FILES['xxx......
  • 30、Django-项目部署-nginx
     原理: 安装: 配置:-这里uwsgi_pass表示使用uwsgi协议转发代理-include表示加载uwsgi协议的参数(固定)-nginx-t  #检查配置文件语法  修改uWSGI:  socket表示启用uwsgi协议      ......
  • Django学习第六天
     启动项目命令pythonmanage.pyrunserver取消模态框功能js实现列表数据删除第二种实现思路使用jquery修改模态框标题编辑页面拿到数据库数据显示默认数据功能实现想要去数据库中获取数据时:对象/字典三种不同的数据类型使用Ajax传入数据实现表单编辑,删除,修改......
  • 16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()
    一对一不是数据库的一个连表操作、而是Django独有的一个连表操作、一对一相当于是特殊的一对多的关系、只是相当于加了unique=True models.pyfromdjango.dbimportmodels#身份证classIDCard(models.Model):idcard_num=models.CharField(max_length=18,unique=......
  • 15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()
    针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表 models.pyfromdjango.dbimportmodels#Createyourmodelshere.#多对多#用户表:电影=N:M#一个用户可以收藏多部电影#一部电影可以被不同的用户收藏#电影classMovie(models.M......
  • 14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()
    #多模块关联--关联分类:Django中的三个函数--ForeignKey-称为外键:一对多、将字段定义在多的一端中--ManyToMnayField:多对多、将字段定义在两端的任意一端中--OneToOneField:一对一、将字段定义在任意一端中 如:一对一:一对多:多对多:常用......
  • Java基础进阶——128陷阱(剖析Integer类的自动拆箱和装箱)
    一、什么是128陷阱?下面用一段代码展示了什么是128陷阱:publicstaticvoidmain(String[]args){Integera=10;Integerb=10;Integeraa=127;Integerbb=127;Integeraaa=128;Integerbbb=128;......
  • metabase邮件去除标志
    1、    修改预警邮件标题(1)    src/metabase/pulse.clj第171行将Metabase改成Daip改为 2、测试邮件(2)、src\metabase\api\email.clj第105行和第108行将Metabase改为Daip原:改:3、邮件中的metabase的logo(3)src\metabase\email\_footer.mustache 第7行......
  • 邮箱验证的重要性,EDM邮件营销群发管理工具--Geeksend邮件营销邮箱验证功能的过人之处
    在进行邮件营销之前,我们是否有必要对收件邮箱进行验证?显然是很有必要的!下面我将总结了几点有关邮箱验证的重要性:邮箱验证的重要性提高邮件营销效果:通过验证真实的邮箱地址,确保邮件能够准确地送达目标用户,从而提高邮件营销活动的转化率。降低营销成本:避免向无效或错误的邮箱......
  • 如何运用Geeksend集成式自动化邮件营销管理平台高效群发邮件
    在邮件营销中,提高用户粘性是一个重要的目标,这有助于增强用户与品牌的互动,并促进用户转化为忠诚的顾客。以下是一些具体的策略和方法,以提高邮件营销中的用户粘性:1.个性化推送:根据用户的订阅偏好和需求,推送符合他们兴趣的邮件内容。通过了解用户的购买历史、浏览行为等,可以更......