Django发送HTML邮件


之前关于使用Django发送邮件已经写过一篇文章,不会在Django中发送邮件的话,可以先看这个传送门

在这个基础上只需要稍加配置就可以有一个比较好看的HTML而不是单调几句话的页面,话不多说,直接上代码
models.py的新生类

class NewStudent(models.Model):DEPARTMENT_CHOICE={('3','技术部'),('2','新媒体'),('1','办公室'),}# unique=True 解决异步问题后将唯一性加上email = models.EmailField(default=None, blank=True, null=False, verbose_name='邮箱')name = models.CharField(max_length=50, default=None, blank=True, null=True, verbose_name='姓名')student_id = models.CharField(max_length=9, default=None, blank=True, null=False, verbose_name='学号')qq = models.CharField(max_length=11,null=False,verbose_name='QQ号')choice = models.CharField(max_length=10,choices=DEPARTMENT_CHOICE,default=0,null=False,verbose_name='部门')code = models.CharField(max_length=20,default=None, verbose_name="邮箱验证码")is_success = models.BooleanField(default=False,verbose_name='邮箱已验证')register_time = models.DateTimeField(auto_now_add=True,verbose_name='注册时间')class Meta:verbose_name = u"新生信息"verbose_name_plural = verbose_name

邮件发送的函数

#new_student是前端传过来的新生信息
#EmailMultiAlternatives是邮件信息相关的model,邮件发送的博文中有描述
def save_studentinfo(request, new_student):code = random_str(16)new_student.code = codeactive_url = str(EMAIL_ACTIVE_URL) + str(code)context = {'student_id' : str(new_student.student_id),'name' : str(new_student.name),'active_url' : str(active_url),}# 发送的html模板的名称email_template_name = 'email_template.html't = loader.get_template(email_template_name)html_content = t.render(context)msg = EmailMultiAlternatives(EMAIL_TITLE, html_content, DEFAULT_FROM_EMAIL, [new_student.email])msg.attach_alternative(html_content, "text/html")msg.send()

下面是email_template.html的代码

<!DOCTYPE html>
<html>
<meta charset="UTF-8"><head><title>Vinta</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2 user-scalable = yes"><style>html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;}body {line-height: 1;}body {background: #424242; /* 标准的语法 */font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, serif;font-size: 14px;font-weight: 400;line-height: 1.5em;}h1, h2, h3, h4 {font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, serif;color: #000000;font-style: normal;line-height: 1em;}h1 {font-size: 18px;text-transform: uppercase;font-weight: 700;margin-bottom: 15px;}h2 {font-size: 16px;font-weight: 700;margin-top: 20px;margin-bottom: 5px;}h3 {font-size: 15px;color: #5e5e5e;font-style: italic;}h4 {font-size: 16px;font-style: italic;font-weight: 400;margin-bottom: 0px;position: absolute;top: -7px;width: 130px;margin-left: -65px;left: 50%;}#wrapper {width: 940px;margin: 0 auto;}.logo {width: 276px;height: 58px;padding: 40px 0px;margin: 0 auto;}/*----- main content of page -----*/#content {background:#ffffff;width: 620px;padding: 40px 160px;float: left;box-shadow: 0px 1px 2px 0px #000000;-moz-box-shadow: 0px 1px 2px 0px #000000;-webkit-box-shadow: 0px 1px 2px 0px #000000;text-align: left;}.launch {font-size: 2em;font-weight: bolder;width: 402px;height: 108px;margin: 0 auto;}</style>
</head>
<body>
<div id="wrapper"><div class="logo"></div><!--content starts--><div id="content"><div class="launch"><img src="http://pd2qkcgty.bkt.clouddn.com/logo.png" height="70" width="auto"style="position: relative;left: -80%;top: -40%"/><br>致学弟学妹的一封信</div><br><br><hr><h1> {{ student_id }}{{ name }}同学你好:</h1><h2style="line-height: 30px"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先祝贺你正式成为计软网安院科协的一员,从加入院科协的那一刻开始,你将经历一段从没经历和感受过的奇妙旅程。我们希望未来的一年中你能在科协这个大家庭中结交志同道合的朋友,从科协牛人中获取经验,成为技术上的大牛,或者在科协活动的举办中锻炼自己的活动组织能力。我们更希望一年后的你能像我们一样在科协为未来的学弟学妹提供技术和学习上的帮助。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;愿初来南邮的你,在未来的一年中能在计软网安院科协这片沃土上,施展自己的才华,活出自己的精彩。(๑•̀ㅂ•́)و✧</h2><br><br><a href="{{ active_url }}"><buttonstyle="width: 620px;border-radius: 3px;background: #3498db;border: 4px;height: 35px;border: #2e6da4;color: white;font-family: 宋体;font-weight: bolder">点击完成验证</button></a><br><br><br><hr><divstyle="width: 80%;height:100%;float: left"><pstyle="position: relative;width: 450px;">加入科协,你需要什么?<br>你需要的是 Interest——兴趣 Passion——激情 Perseverance——毅力世界本没路,走的人多了就有了路,没有谁天生就会,一切都是通过不断学习获得。从零开始,你将在这里慢慢成长。在这里你将会获得毕生的朋友,因为你们志同道合。</p></div><divstyle="width: 20%;float: left;height: 100%"><img src="http://pd2qkcgty.bkt.clouddn.com/sacc_QR_Code.png" alt="微信二维码" id="img-left"style="width: 110px;height: 110px"></div><hr><pstyle="text-align: right">南京邮电大学计软网安院科协<br>njupt.sacc@outlook.com</p><br><pstyle="text-align: center">sacc期待你的加入</p></div>
</div>
</body>
</html>

最后展示一下效果:
PC端:

移动端:

Django发送HTML邮件相关推荐

  1. python进行邮件发送以及django中利用邮件注册激活功能

    协议 SMTP协议 SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议.它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮 ...

  2. django自带邮件模块实现用户注册激活邮件发送

    最近在看慕课网的利用Django搭建教学网站的视频,其中碰到了给注册用户发送激活邮件的问题.期间也遇到了一些小问题,在此记录一下. 实现邮件发送流程 利用django.core.mail模块下的sen ...

  3. Django-Celery异步发送激活邮件,以及注意点

    1.Celery介绍 点击查看Celery参考文档 Celery是一个功能完备即插即用的任务队列 Celery适用异步处理问题,比如发送邮件.文件上传,图像处理等等比较耗时的操作,我们可将其异步执行, ...

  4. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  5. Java发送邮件工具类(可发送匿名邮件)

    为什么80%的码农都做不了架构师?>>>    为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependenci ...

  6. nagios监控三部曲之——为什么nagios不能发送报警邮件(2)

    最近我写了关于naigos监控的安装与配置的技术文档,公司运维按照我的文档部署naigos,发现不能发送报警邮件,经过我的检查,发现问题如下: 1.hosts里的配置 [root@nagios ~]# ...

  7. 简单两步使用node发送qq邮件

    node发送邮件非常简单,这里只做qq的演示,你可以举一反三. 使用nodemailer包 let transporter = nodemailer.createTransport({// 使用qq发 ...

  8. cobaltstrike安装_Cobalt Strike发送钓鱼邮件

    Hello大家好哇,我是你们可爱的lmn小姐姐,今天我们来研究一下如何使用Cobalt Strike发送钓鱼邮件. 使用CS钓鱼需要四个步骤: 1. 创建一个目标列表 2. 创建一个钓鱼模版 3. 选 ...

  9. office365为新建账号发送欢迎邮件

    在日常中,有新同事入职了,需要为新入职的同事发送欢迎邮件,并附上相应的入职ppt及一些常用小工具,这个可以系统自动发送来实现,下面是为新建的属于杭州的邮箱用户发送欢迎邮件,可以根据下面的来修改,修改发 ...

最新文章

  1. 通过xmanager远程连接redhat linux as 5
  2. 如何在指定文件夹下进入jupyter notebook
  3. 关于ADAM中自定义Class Schema后不能创建该Class的实例的问题
  4. py 的 第 20 天
  5. 5-Qt6 QObjec对象拷贝
  6. 数据结构与算法之字符凭拼接最低字典序和数据流中取中位数
  7. Java学习笔记之 IO包 字符流
  8. 邮件服务器两种协议,邮件服务器协议
  9. 嵌入式·实时操作系统 xos介绍
  10. sublime text3 python找不到文件路径_如何在sublime3 项目设置中设置 python 解释器的路径?...
  11. 彻底解决pip下载pytorch慢的问题
  12. unity3d中的local和global
  13. ArcEngine 入门教程-控件初体验
  14. 10分钟!Mac配置Win主机上的共享打印机
  15. 计算机网络: 码元 波特 速率 带宽
  16. Oracle:Sqlplus连接的时候中文出现乱码“?胧淙胗没?”的解决方案
  17. [转载] 机器学习数据集统计系列(二)
  18. MySQL之——MS主从复制(读写分离)实现
  19. 表格内单元格可点击,查看详情
  20. 音频编解码之G711

热门文章

  1. 最原始最古老的家谱是哪种?采取怎样的形式传承给后代?
  2. 家装建材行业解决方案
  3. 南大匡亚明学院计算机方向,解密!南京大学“最强理科班”这样炼成……
  4. 机智云AIoT开发平台,让物联网产品开发和运营有迹可循
  5. 超百万观众同场看直播秒开不卡顿,快手是如何做到的?|首次披露
  6. Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
  7. 【期权系列】顶部和底部信号:期权看跌看涨比(PCR)
  8. 音频播放器—打开音频设备(扬声器)
  9. 初学OpenCV:用本地摄像头拍照并保存为灰度图片
  10. python实现词语统计并柱状图显示