邮件:
在settings中配置:
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = "[email protected]"
EMAIL_HOST_PASSWORD = "wmodnubvjmvgbbhg"
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
发送文档:
def fayoujian(req):
title = "什么鬼"
msg = "什么什么鬼"
receiver = [
"[email protected]",
"[email protected]"
]
email_from = settings.DEFAULT_FROM_EMAIL
send_mail(title, msg, email_from, receiver)
return HttpResponse("ok")
发送HTML:
def html(req):
title = "搞什么啊"
jiazai = loader.get_template("html.html")
xuanran = jiazai.render({"data": "哦哦哦"})
receiver = [
"[email protected]",
"[email protected]"
]
email_from = settings.DEFAULT_FROM_EMAIL
send_mail(title, "", email_from, receiver, html_message=xuanran)
return HttpResponse("keyi")
发送附件:
def fujian(req):
title = "送你一个大妹子"
msg = "...."
receiver = [
"[email protected]",
"[email protected]"
]
email_from = settings.DEFAULT_FROM_EMAIL
message = EmailMessage(title, msg, email_from, receiver)
path = os.path.join(settings.BASE_DIR, "static/123.jpg")
message.attach_file(path, "image/jpg")
message.send()
return HttpResponse("666")
邮件验证:
在app目录下新建一个.py文件
import uuid
import hashlib
def get_uuique_str():
uuid_str = str(uuid.uuid4()).encode("utf-8")
md5 = hashlib.md5()
md5.update(uuid_str)
return md5.hexdigest()
生成一个文件名
在views中:
def send_verify_mail(req):
uuid_str = get_unique_str()
#拼接邮件验证的链接
url = "http://" + req.get_host() + "/t08/verify/" + uuid_str
先拼接邮件验证的链接,通过邮件送到邮箱,供用户验证。
设置缓存:
在settings中:
VERIFY_CODE_MAX_AGE = 60 * 60
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
#要使用的缓存名字
"confirm": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/2",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
缓存使用,在views中:
#导入caches
from django.core.cache import caches
#实例化缓存
cache = caches['confirm']
def send_verify_mail(req):
uuid_str = get_unique_str()
#拼接邮件验证的链接
url = "http://" + req.get_host() + "/t08/verify/" + uuid_str
# 加载模板 渲染
template = loader.get_template("email_template.html")
html = template.render({"title": "欢送刘恒宾", "url": url})
title = "呵呵哒"
user_email = "[email protected]" # 应该是解析用户传递过来的参数
receivers = [
user_email
]
email_from = settings.DEFAULT_FROM_EMAIL
send_mail(title, "", email_from, receivers, html_message=html)
# 设置缓存
#uuid_str是键;user_email是值;settings.VERIFY_CODE_MAX_AGE是缓存有效时长
cache.set(uuid_str, user_email, settings.VERIFY_CODE_MAX_AGE)
return HttpResponse("注册成功,请注意查收邮件")
验证链接:
给验证链接加一个url:
url(r"^verify/(.*)", verify)
在views中加:
def verify(req, code):
# 去缓存拿数据
email = cache.get(code)
if email:
# 找到用户对象,然后更新用户状态字段 is_active=True save()
return HttpResponse(email+"验证成功")
else:
return HttpResponse("验证无效")
当访问这个url是(.*)中的数据就是views中verify函数的参数code
然后 email = cache.get(code),通过code这个键去找缓存里的值,如果有就验证成功。