28、Django-发送邮件
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 = '303977143@qq.com' # 发件人邮箱 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='303977143@qq.com', 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) ---------------------------------------------------------------
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18209418
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步