Django发送邮件

正文

一般时候,我们需要在界面上有一键发送邮件的功能,那么首先先创建一个按钮,如下:

1
2
3
4
5
6
7
8
<div class="post">
<div class="user-block">
</div>
<!-- 以下这种写法可以直接召唤邮件系统,但是没有内容 -->
<strong> 点击按钮就会以taoxi.cs@alibaba-inc.com发送邮件到对应的邮件组 </strong>
<br>
<button type="button" class="btn btn-danger" onclick="AjaxSubmit();">发送邮件</button>
</div>

由于点击按钮发送邮件,页面并不发生跳转,所以我们用ajax来绑定点击这个任务,同时需要新增一个script:

1
2
3
4
5
6
7
8
9
10
11
12
<script>
function AjaxSubmit() {
var status = '邮件已经发送成功!';
$.ajax({
url:'/naxx/send_mail/',
type:'POST',
data:{status:status},
success:function (arg){
}
})
}
</script>

保存后,效果如下:
akb48

这里面由于新增了一个路由send_mail,于是就去urls.py里增加对应的函数:

1
path('send_mail/', views.send_mail, name='send_mail'),  # ajax发送邮件功能

然后去Django的settings.py里添加对应的邮箱信息:

1
2
3
4
5
6
7
8
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.XXX.com' # 这里是邮箱服务器
EMAIL_USE_SSL = True
EMAIL_USE_TLS = not EMAIL_USE_SSL # 这里跟EMAIL_USE_SSL是互斥的,只有一个是True
EMAIL_PORT = 465 # 如果是SSL发送就是465,不然大概率是25接口
EMAIL_HOST_USER = "发送者的邮箱"
EMAIL_HOST_PASSWORD = "发送者的密码"
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

返回到views.py里,新增如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from django.conf import settings	# 将settings的内容引进
from django.core.mail import EmailMultiAlternatives # 这样可以发送HTML格式的内容了

# 在大促压测详情页发送邮件
def send_mail(request):
subject = '2020年9月25日XXX次压测报告'
text_content = '这是一封veryveryvery重要的邮件.'
html_content = '''
<p>这是一封<strong>重要的</strong>邮件.<br>好好学习天天向上</p>
<table border="1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
'''
from_email = settings.DEFAULT_FROM_EMAIL
msg = EmailMultiAlternatives(subject, text_content, from_email, ['接收人的邮箱地址'])
msg.attach_alternative(html_content, "text/html")

msg.send()
print(request.POST)
return JsonResponse({'status': '邮件已经发送成功!'}) # 这个信息返回给AJAX

保存之后,在页面上尝试一下点击“发送邮件”按钮试试,效果如下:
akb48

如果你想在HTML里直接调用系统默认电邮程序发送邮件,就把HTML这么写:

1
<a href="mailto:XXX@126.com">Email</a>

到时候点击Email链接就会弹出程序了。

参考资料

https://www.cnblogs.com/yifchan/p/python-1-34.html
https://blog.csdn.net/qq_35695253/article/details/80145634 《Django获取该数据的上一条和下一条》

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------