1、参考url:
https://www.cnblogs.com/zyj-python/p/7522471.html
注意:
如设置EMAIL_USE_SSL = True #是否使用SSL加密,qq企业邮箱要求使用,
端口需要修改为: 465
具体端口修改参考:https://blog.csdn.net/areigninhell/article/details/79917388
2、views代码样例:
多线程方式实现:
2.1,调用
sqlOrderSendEmal2Create(sqlOrder.id, self.request.get_host).start()
2.2、方法代码
import threading from django.template import loader from django.core import mail from django.conf import settings class sqlOrderSendEmal2Create(threading.Thread): ''' 创建订单邮件 ''' def __init__(self,id,host): super().__init__() self.sqlOrderId = id self.host = host def run(self): self.sendMail() def sendMail(self): sqlOrder = SqlOrder.objects.get(id=self.sqlOrderId) render_args = {'obj': sqlOrder, 'server_host': self.host, 'assigned_user': sqlOrder.assigned,} to_applyer_content = loader.render_to_string( 'sqlapply/sqlOrder_create_notice_to_assigned.html', render_args) connection = mail.get_connection() connection.open() messages = [] # 通知审核人 if Users.objects.get(username=sqlOrder.assigned).email: assigned_mails = [Users.objects.get(username=sqlOrder.assigned).email, ] to_assigned_subject = 'SQL执行申请 - 申请通知 - {0} - 单号:{1}'.format(sqlOrder.text, sqlOrder.work_id) to_assigned_msg = mail.EmailMessage(to_assigned_subject, to_applyer_content, settings.EMAIL_HOST_USER, assigned_mails) to_assigned_msg.content_subtype = 'html' messages.append(to_assigned_msg) connection.send_messages(messages) connection.close()
2.3、邮件内容模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>运维平台 - SQL执行审核通知 单号{{ obj.work_id }}</title> </head> <body> <div style="border: 1px solid #d8d8d8; border-radius:5px; padding: 20px"> <div style="border-bottom: 1px solid #d8d8d8; padding: 0 10px 5px 10px"><b>运维平台</b> - SQL执行审核通知 单号{{ obj.work_id }} </div> <br /> <div style="padding: 0px 10px 5px 10px"> <p>{{ obj.username }},您好:</p> <p style="padding: 0px 0px 0px 20px"> 您发起的单号为:<a href="http://{{ server_host }}{% url 'sqlapply:mySqlOrder' %}"><b>{{ obj.work_id }}</b></a> 的 SQL执行申请,已有新进展,请登入运维平台查看。 <a href="http://{{ server_host }}{% url 'sqlapply:mySqlOrder' %}">查看此申请</a> </p> <br /> <div style="padding: 0px 0px 0px 20px"> <table style="width: 100%"> <tr> <td style="min-width: 80px">状态:</td> <td>{{ obj.get_status_display }}</td> </tr> <tr> <td>链接:</td> <td> <a href="http://{{ server_host }}{% url 'sqlapply:mySqlOrder' %}">http://{{ server_host }}{% url 'sqlapply:mySqlOrder' %}</a> </tr> {% if obj.assigned %} <tr> <td>审批人:</td> <td>{{ obj.assigned }}</td> </tr> {% endif %} {% ifequal obj.status 0 %} <tr> <td>驳回说明:</td> <td>{{ obj.rejected }}</td> </tr> {% endifequal %} {% if obj.text %} <tr> <td>工单说明:</td> <td>{{ obj.text }}</td> </tr> {% endif %} </table> </div> </div> </div> </body> </html>