发送邮件

发送邮件的核心代码

发送一封邮件——send_mail

from django.core.mail import send_mail  
  
send_mail(
    '邮件标题', 
    '邮件内容',
     '发件人邮箱地址',    
     ['收件人邮箱地址'], 
     fail_silently=False
     )

fail_silently:可选参数,默认是False,如果是False,则发送失败时候,会抛出smtplib.SMTPException异常,具体详细的异常

auth_user:可选的参数,如果有,那么认证SMTP Server时,使用该用户,否则使用EMAIL_HOST_USER设置

auth_password:可选参数,如果有,那么认证SMTP Server时,使用该密码,否则使用、EMAIL_HOST_PASSWORD设置

一次发送多封邮件——send_mass_mail((邮件1, 邮件2 …), fail_silently=False)

需要在setting中设置发送邮件的服务器配置信息

EMAIL_HOST ='smtp.sina.cn'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'sth@sina.cn' 发件人邮箱
EMAIL_HOST_PASSWORD = '123456'  授权码

EmailMultiAlternatives

from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives(邮件标题, 纯文本内容, 发件人, [收件人])
msg.attach_alternative(HTML格式的文本, "text/html")
msg.send()

参考资料:https://docs.djangoproject.com/en/1.11/topics/email/

QQ邮箱的收取邮件支持POP/IMAP两种协议,发送邮件采用SMTP协议,收件和发件均使用SSL协议来进行加密传输,采用SSL协议需要单独对帐户进行设置。采用SSL协议和非SSL协议时端口号有所区别,参照下表的一些常见配置组合:

类型服务器名称服务器地址非SSL协议端口号SSL协议端口号
发件服务器SMTPsmtp.qq.com25465/587
收件服务器POPpop.qq.com110995
收件服务器IMAPimap.qq.com143993

发送邮件

创建项目 EmailDemo
创建app 

EmailDemo/settings.py
# 设置发件服务器
EMAIL_HOST ='smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = '183456679@qq.com'
EMAIL_HOST_PASSWORD = 'epensntfhhgb'



app/views.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

from django.core.mail import EmailMultiAlternatives

def test_send_mail(request):
    msg = EmailMultiAlternatives('学习', '天天向上', '1874996645@qq.com', ['huiyinimen@163.com'])
    msg.attach_alternative('HTML格式的文本', "text/html")
    msg.send()
    return HttpResponse('ok')





EmailDemo/urls.py
from django.conf.urls import url
from django.contrib import admin
from app.views import test_send_mail
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^email/',test_send_mail)
]


测试:http://10.8.152.31:8888/email/
创建项目RESTfulDemo
创建app task

task/models.py

from django.db import models

# Create your models here.

class Task(models.Model):
    title = models.CharField(max_length=100)
    completed = models.BooleanField(default=False)


    class Meta:
        db_table = 'tasks'
        verbose_name_plural = '任务列表'
        verbose_name = '任务'
        
     def __str__(self):
        return self.title   
  




# 让task出现在admin管理页面中 
#  在admin中注册 Task

task/admin.py
# Register your models here.
from django.contrib import admin
from task.models import Task

# 注册
admin.site.register(Task)




RESTfulDemo/settings.py
ALLOWED_HOSTS = ['10.8.152.31']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'task',
]

测试登录  python manage.py makemigrations
		 python manage.py migrate
    
python manage.py createsuperuser
测试 登录之后显示内容

另一种测试方法

task/apps.py

from django.apps import AppConfig
class TaskConfig(AppConfig):
    name = 'task'
    verbose_name = '任务'
    
    
 RESTfulDemo/settings.py
ALLOWED_HOSTS = ['10.8.152.31']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'task.apps.TaskConfig',
]




task/serializers.py

from task.models import Task
from rest_framework import serializers

# 使用Serializer把task数据序列化
class TaskSerializer(serializers.ModelSerializer):

    # 指定序列化的模型 字段
    class Meta:
        model = Task
        fields = ('title',)  # 元祖需要加逗号
    
        
        
 

task/views.py

# Create your views here.
from django.shortcuts import render
from task.models import Task
from task.serializers import TaskSerializer
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from rest_framework.renderers import JSONRenderer


# 获取所有的数据 返回json格式
@csrf_exempt
def task_list(request):
    if request.method == 'GET':

        # 去除所有数据
        task = Task.objects.all()
        # 数据序列化
        serializer = TaskSerializer(task,many=True)
        return JsonResponse(serializer.data,safe=False)

    elif request.method =='POST':

        # 获取数据
        data = JSONParser().parse(request)
        # 创建一个序列化对象
        serializer = TaskSerializer(data=data)
        # 检测数据是否合法 若合法 保存数据
        if serializer.is_valid():
            serializer.save()
            return JsonResponse({'msg':'save success!'})
        else:
            return JsonResponse({'msg':'save fail!'})
# 查询  查询出数据 序列化
# 保存 json数据转化成普通字段   普通字段序列化 在保存 



  # 查询某个
@csrf_exempt
def task_detail(request,pk):
    try:
        task = Task.objects.get(pk=pk)
    except Task.DoesNotExist as e:
        return JsonResponse({'msg':'查找的结果不存在'},status=404)
    
    if request.method == 'GET':
        servializer = TaskSerializer(task)
        return JsonResponse(servializer.data)
    # 修改
    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        servializer = TaskSerializer(task,data=data)
        if servializer.is_valid():
            servializer.save()
            return JsonResponse(servializer.data)
    elif request.method == 'DELETE':
        task.delete()
        return JsonResponse({'msg':'delete success!'})

 





task/urls.py

from django.conf.urls import url
from task.views import task_list
urlpatterns = [
    url(r'^tasks/',task_list),
]




 
    
 RESTfulDemo/urls.py

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^',include('task.urls'))
]


测试:10.8.152.31:8888/task/

 

官网测试1-4

http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值