Django邮件发送

  1. 在settings中添加关键信息

EMAIL_HOST = ‘smtp.qq.com‘ #不同的邮箱有不同的发件地址(收件地址)

EMAIL_PORT = 25 #smtp端口号

EMAIL_HOST_USER = ‘邮箱‘ #发件人邮箱

EMAIL_HOST_PASSWORD = ‘密码‘ #邮箱密码,其实是授权码

2.在views中导入发邮件相关的包:

from django.shortcuts import render

from django.http import HttpResponse

from django.core.mail import send_mail, send_mass_mail,EmailMultiAlternatives,BadHeaderError

from rest_framework.parsers import JSONParser

3.多种发邮件类型:

a.一封邮件发多人:send_mail,多人在列表里指定

b.多封邮件分别发多人:send_mass_mail,多套放在元组里

c.邮件中添加其他类型的内容:EmailMultiAlternatives、attach_alternative、send,制定了其他格式内容,原内容会被覆盖

4.综合案例:通过httpie等接口测试工具,post传递发邮件所需要的数据,并对逻辑做了处理,httpie默认传递json格式的数据,需要先解析成普通python基本数据类型,再进行操作(可用django自带的json loads dumps,也可用django框架restframework的parsers的JSONParser),导入的BadHeaderError用在请求数据有误时抛出无效的请求头 异常


from django.shortcuts import render

from django.http import HttpResponse

from django.core.mail import send_mail, send_mass_mail,EmailMultiAlternatives,BadHeaderError

from rest_framework.parsers import JSONParser

# Create your views here.

def test01(request): # 一封邮件多发

send_mail(

‘这里是标题‘,

‘内容:天青色等烟雨‘,

‘邮箱‘,

[‘邮箱1‘, ‘邮箱2‘],

fail_silently=False,

)

return HttpResponse(‘OK‘)

def test02(request):

datatuple = (

(‘标题one‘, ‘内容one‘, ‘邮箱‘, [‘邮箱1‘, ‘邮箱2‘]),

(‘标题two‘, ‘内容two‘, ‘邮箱‘, [‘邮箱1‘, ‘邮箱2‘]),

)

send_mass_mail(datatuple,fail_silently=False)

return HttpResponse(‘OVER‘)

def test03(request):

subject,from_email,to = ‘哈哈主题‘,‘邮箱‘,[‘邮箱1‘, ‘邮箱2‘]

text_content = ‘红尘客栈‘

html_content = ‘<h1>红尘客栈风似刀,骤雨落宿命敲</h1>‘

msg = EmailMultiAlternatives(subject,text_content,from_email,to)

msg.attach_alternative(html_content,‘text/html‘)

msg.send()

return HttpResponse(‘html OVER‘)

def sendmail(request):

#用httpie测试接口时,默认传递过来的时json数据,所以需要先解析成python基本数据类型,再操作

if request.method == ‘POST‘:

data = JSONParser().parse(request)

subject = data.get(‘subject‘,‘‘)

message = data.get(‘message‘,‘‘)

from_email = data.get(‘from_email‘,‘‘)

if subject and message and from_email:

try:

send_mail(subject,message,from_email,[‘邮箱‘,])

except BadHeaderError:

return HttpResponse(‘Invalid header found.‘)

return HttpResponse(‘success OVER‘)

else:

return HttpResponse(‘Make sure all fields are entered and valid.‘)

return HttpResponse(‘GETGET‘)

原文地址:https://www.cnblogs.com/siplips/p/9609370.html

时间: 2024-08-30 13:45:05

Django邮件发送的相关文章

python 项目实战之Django 邮件发送

发送邮件¶ 虽然 Python 借助 smtplib 模块简化了发送邮件的流程,但是 Django 在其基础上提供了更简化的支持.这些封装意在加快邮件发送,方便在开发时测试发送邮件,在不支持 SMTP 的平台上支持发送邮件. 官网:https://docs.djangoproject.com/zh-hans/2.2/topics/email/ 这些代码位于 django.core.mail 模块. 快速上手 仅需两行代码: from django.core.mail import send_ma

Django 邮件推送 解决附件中文名字乱码

Django邮件功能,详情可看官方文档(https://docs.djangoproject.com/en/1.10/topics/email/). 最近做这个功能时遇到的问题,发送附件,收到后中文名字乱码,解决方法如下: 需要对文件名在header中进行编码处理,否则,收到的附件中文名字会乱码. 1 from django.core.mail import EmailMessage 2 from email.header import make_header 3 4 email = Email

通过邮件发送账单详情

1.为了方便财务部分查看个账户支出详情,通过计划任务每天发送账单情况 python 代码如下: # coding:utf-8 from django.db.models import Q from jumpserver.api import * from jumpserver.models import Setting from django.http import HttpResponse,StreamingHttpResponse from django.shortcuts import r

解决阿里云邮件发送不能使用25端口问题

本地测试发邮件功能很流畅,部署到阿里云上以后发现总是NOT FIND,这就很奇怪.开始以为是url写错了导致的,检查N多遍发现完全一毛一样的.后来各种百度,发现是因为阿里云禁用了25端口导致的.查看各种资料,解决的办法五花八门.试了几种解决方案,都解决了问题.现在整理如下:(不用去尝试申请解禁25端口的,可以很认真负责的告诉你,完全没有卵用) 首先,是阿里大大给的官方的解决方案,用SMTP发送邮件:代码如下 # -*- coding:utf-8 -*- import urllib, urllib

django 邮箱发送

在django中提供了邮件接口 QQ邮箱配置 qq邮箱地扯:https://mail.qq.com settings文件 # 邮箱配置 EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com EMAIL_PORT = 465 EMAIL_HOST_USER = '[email protected]' # 配置邮箱 EMAIL_HOST_PASSWORD = 'xxxxx' # 对应的授权码 DEFAULT

学习笔记之邮件发送篇

用脚本语言发送邮件是系统管理员必备技能 对系统定期检查或者当服务器受到攻击时生成文档和报表. 发布这些文档最快速有效的方法就是发送邮件. python中email模块使得处理邮件变得比较简单 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 本段摘录于    http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 1.smtplib模块 smtplib.SMTP([host[, p

java-基于JavaMail的Java邮件发送

1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送

更改邮件发送语言为英语,解决编码为UTF8邮箱注册账号,邮件内容乱码问题

Change email English language, code for UTF8 mailbox registered account, email content garbled. 1. code analysis 乱码分析 通过对中文编码的邮件服务器使用原来的系统(GB2312) The original system used by the mail server encoding for the Chinese code (GB2312) 我使用outlook.com的邮箱(UT

redmine邮件发送功能配置详解

redmine的邮件发送功能还是很有用的. 像项目有更新啦,任务分配啦,都能邮件发送的相关责任人. 我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了. 查了网上的资料,都是讲修改下配置文件就可以了,他们没错,只是没有讲全. 下面是我整理的一个redmine邮件发送功能设置的一个完整流程. 1. sendmail安装与检查 linux机器上安装的redmine要能发送邮件,先得是本机的sendmail功能是正常的. 查看sendmail进程是否已正常启动: $ ps au