Django 发送邮件

在settings.py中设置

EMAIL_USE_SSL = True

EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com

EMAIL_PORT = 465

EMAIL_HOST_USER = '763005825@qq.com' # 帐号

EMAIL_HOST_PASSWORD = 'jffbcdknmbzvbega'  # 密码

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

引入包

from django.core.mail import send_mail

发送邮件

send_mail('主题',"内容",'发送账号',['接收账号'], fail_silently=False)

selery发送邮件

celery

  • 官方网站
  • 中文文档
  • 示例一:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验
  • 示例二:网站每小时需要同步一次天气预报信息,但是http是请求触发的,难道要一小时请求一次吗?
  • 使用celery后,情况就不一样了
  • 示例一的解决:将耗时的程序放到celery中执行
  • 示例二的解决:使用celery定时执行

名词

  • 任务task:就是一个Python函数
  • 队列queue:将需要执行的任务加入到队列中
  • 工人worker:在一个新进程中,负责执行队列中的任务
  • 代理人broker:负责调度,在布置环境中使用redis

使用

  • 安装包

celery==3.1.25

celery-with-redis==3.0

django-celery==3.1.17

  • 配置settings

INSTALLED_APPS = (

...

'djcelery',

}

...

import djcelery

djcelery.setup_loader()

BROKER_URL = 'redis://127.0.0.1:6379/0'

CELERY_IMPORTS = ('应用名称.task')

  • 在应用目录下创建task.py文件

from celery import task

from django.core.mail import send_mail

import time

@task

def sendmail():

email='763005825@qq.com'

send_mail('reigster',"欢迎登录天天生鲜",'763005825@qq.com',[email],fail_silently=False)

time.sleep(10)

  • 迁移,生成celery需要的数据表

python manage.py migrate

  • 启动Redis

sudo redis-server /etc/redis/redis.conf

  • 启动worker

python manage.py celery worker --loglevel=info

  • 使用代码

#from task import *

def index(request):

sendmail.delay()

return HttpResponse("hello world")

# 专门进行验证def validate_sql(data):    for k,val in data:        if re.match("['select' ,'update','delete']", val) != None:            return False    return True

# 注册class Register(View):    def get(self,request):        return render(request,'index/register.html')    def post(self,request):        mes = {}        data=request.POST        # flag=validate_sql(data)        # if flag==False:        #     mes['code'] = 10015        #     mes['message'] = '输入不合法'        #     return HttpResponse(json.dumps(mes))        username=data.get('user_name')        pwd=data.get('pwd')        cpwd=data.get('cpwd')        email=data.get('email')        allow=data.get('allow')        if not all([username,pwd,cpwd,email,allow]):            mes['code']=10010            mes['message']='都不能为空'            return HttpResponse(json.dumps(mes))        else:            # 用户名必须为8-12位字母            if re.match("\w{8,12}$",username)==None:                mes['code']=10011                mes['message']='用户名不合法'

            # if re.match("['select' ,'update','delete']",username)!=None:            #     mes['code']=10012

            #     验证邮箱            if re.match("\w{8,12}@(163|126|qq).com$", email) == None:                mes['code'] = 10012                mes['message'] = '用户名不合法'                return HttpResponse(json.dumps(mes))

            # 验证两次输入的密码是否一致            if pwd!=cpwd:                mes['code'] = 10013                mes['message'] = '两次输入的密码不一致'                return HttpResponse(json.dumps(mes))            # 注册            user=User(name=username,password=make_password(pwd),            token='23')            try:                user.save()                request.session['indexuser']=username                # 发送邮件                from mypro.settings import DEFAULT_FROM_EMAIL                send_mail('你好,欢迎注册',"欢迎你注册xx网站<a href='/authuser?"                                    "token=wertfgb>",DEFAULT_FROM_EMAIL,[email],fail_silently=False)            except:                mes['code'] = 10018                mes['message'] = '添加失败'                return HttpResponse(json.dumps(mes))        mes['code']=1200        mes['message']=''        return HttpResponse(json.dumps(mes))

posted on 2019-06-04 11:41 女己。 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/wyf2019/p/10972625.html

Django 发送邮件相关推荐

  1. Django项目实战——8—(判断用户是否登录并返回JSON、Django发送邮件的配置、生成邮箱验证链接、验证邮箱后端逻辑)

    1.判断用户是否登录并返回JSON 重要提示: 只有用户登录时才能让其绑定邮箱. 此时前后端交互的数据类型是JSON,所以需要判断用户是否登录并返回JSON给用户. 方案一: 使用Django用户认证 ...

  2. Django - 发送邮件

    在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件. 所有的功能都在django.core.mail中. ...

  3. Django发送邮件

    Django提供了发送邮件的接口,仅需做简单的设置即可实现发送邮件的功能. 首先需要在setting做简单的配置,以163邮箱为例: EMAIL_BACKEND = 'django.core.mail ...

  4. django 发送邮件验证码

    一.前言 1.邮箱有几种类型? 邮箱分为企业邮箱,如:腾讯企业邮箱.网易企业邮箱.阿里企业邮箱.新浪企业邮箱.zoho企业邮箱.个人邮箱,如:QQ邮箱.163网易邮箱.sina新浪邮箱. 2.TCL& ...

  5. 30.django发送邮件

    目录 1  协议介绍 1.1  SMTP协议 1.2  IMAP 1.3  POP3 1.4  IMAP与POP3的区别 2  在Django使用 2.1  开通邮箱SMTP服务 2.2  配置set ...

  6. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  7. python写邮箱系统_Python django实现简单的邮件系统发送邮件功能

    本文实例讲述了Python django实现简单的邮件系统发送邮件功能.分享给大家供大家参考,具体如下: django邮件系统 Django发送邮件官方中文文档 总结如下: 1.首先这份文档看三两遍是 ...

  8. Django使用新浪邮箱发送邮件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Django使用新浪邮箱发送邮件 一.参考的资料 二.遇到的问题 一.参考的资料 刘江Django博客教程: 11.Django发送邮 ...

  9. 摘抄Django项目(一)

    果生鲜项目介绍 1.商业模式说明 2.开发流程介绍 3.项目需求分析 4.项目架构分析 5.数据库设计 6.模型类说明 7.创建dailyfresh项目 8.展示注册页面 9.视图函数的get和pos ...

最新文章

  1. Gitbook简易教程
  2. linux编译c++11的代码
  3. 【牢骚】360,你怎么对待别人,别人就怎么对待你。
  4. 利用 Spring MVC 上传多文件到指定目录 spring upload files
  5. 监听edittext中文字个数变化··
  6. 【开源】.net 分布式架构之监控平台
  7. redis+php微博,redis+php实现微博(三)微博列表功能详解
  8. 【Spring】Spring Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect‘ not set
  9. office右键菜单修复_自从有了这个工具,我的Office操作已经快到慢不下来了!
  10. 阅读bulid to win感想
  11. vant 日历插件slots_vue的vant组件库中的slot如何按需使用呢
  12. 【每天get 一点新知识】Python print 打印结果(字符串类型)前面添加 说明
  13. 问题三十八:C++中bad alloc问题(1)——分析问题
  14. 02 Toolbar的使用
  15. 微软Bing翻译API的使用
  16. vue 手机号正则表达式
  17. 程序员用什么软件做笔记?
  18. DAEFRHDSGYEVHHQKLVFFAEDV|138648-77-8
  19. .obj 和 .mtl文件格式
  20. C语言算法:冒泡法排序

热门文章

  1. 动态图相册 android,‎动态图相册 in de App Store
  2. 简述java的异常机制_JAVA异常机制简述
  3. v-show组件 vue_Vue.js教程--基础(实例 模版语法template computed, watch v-if, v-show v-for, 一个组件的v-for.)...
  4. 代码和mysql服务器编码不一致_PL/SQL Developer教程:解决oracle服务器端和客户端字符编码不一致问题...
  5. SQLi LABS Less-39
  6. Java B2B2C o2o多用户商城 springcloud架构-docker-feign-hystrix(六)
  7. 桌面上的Flutter:Electron又多了个对手
  8. k8s nod rc service 使用
  9. Java 数据类型和 MySql 数据类型对应一览表
  10. PHP5.3版本安装