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')
 
 

Django——邮件发送的更多相关文章

  1. 毕业设计——Django邮件发送功能实现及问题记录

    django发送邮件:send_mail()&send_mass_mail() 自强学堂 刘江的博客 HTTPS,TLS和SSL django发送邮件及其相关问题 步骤 : 0. 登录作为发送 ...

  2. python 项目实战之Django 邮件发送

    发送邮件¶ 虽然 Python 借助 smtplib 模块简化了发送邮件的流程,但是 Django 在其基础上提供了更简化的支持.这些封装意在加快邮件发送,方便在开发时测试发送邮件,在不支持 SMTP ...

  3. django邮件发送

    需要一个邮箱,设置pop3 设置setting EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = ' ...

  4. Django的邮件发送以及云服务器上遇到的问题

    邮件发送 首先我们的邮箱要开通smtp服务,然后就可以在settings中配置了 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBacken ...

  5. django 配置邮件发送 send_email

    导入 send_email 所用方法导入 from django.core.mail import send_mail 因为使用的需要指明 发送人 所以要把 setting.py 中的 EMAIL_F ...

  6. Django之邮件发送

    settings.py #settings 添加如下配置进行邮件发送 #邮件服务器 EMAIL_HOST = "smtp.qq.com" #邮件发送的端口 EMAIL_PORT = ...

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

    Django邮件功能,详情可看官方文档(https://docs.djangoproject.com/en/1.10/topics/email/). 最近做这个功能时遇到的问题,发送附件,收到后中文名 ...

  8. django邮件

    1.邮件变量 (django settings.py) ADMINS = [('JOHN','JOHN@example.com'),('zhang','zhang@example.com')] #设置 ...

  9. django 邮箱发送

    在django中提供了邮件接口 QQ邮箱配置 qq邮箱地扯:https://mail.qq.com settings文件 # 邮箱配置 EMAIL_USE_SSL = True EMAIL_HOST ...

随机推荐

  1. linux dig 命令使用方法

    ref:https://www.imooc.com/article/26971?block_id=tuijian_wz dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 D ...

  2. IT设备服务监控的方法论

    有方法论提导,在技战术方面才不会偏离目录. 使用服务级别作为关键语,召示着承诺和责任. https://www.circonus.com/2018/06/comprehensive-container ...

  3. Windows Server 2012 R2 设置 NTP 服务

    其实和以前的server版本配置没啥不一样 都是先改注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\ ...

  4. json2csharp & json 格式化

    json2csharp: http://json2csharp.com/ bejson: http://www.bejson.com/

  5. 2018 UESTC 线段树专题

    A - 一棵简单的线段树 A[1...n]初始全为0. 1. 给两个数p 和 x(1≤p≤n),单点更新 A[p] <- x 2. 给两个数L和R (1≤L<R≤n),  L到R区间里这几 ...

  6. bat批处理文件 批量修改文件名

    需要将一系列文件如out-M0.png, out-M1.png, out-M2.png, ... 重新命名为 color-0.png, color-1.png, color-2.png, ... 方法 ...

  7. JDK5的新特性之增强for循环遍历数组或集合

    [格式] for(元素的类型 变量名 : 数组或Collection集合名){ //此处使用变量名即可,该变量就是普通for里的i. }

  8. JavaSE| 泛型

    泛型 泛型:对后续所有操作的类型做约束,对后续操作起作用,对之前的不起作用: 对类型进行约束:  父 ----> 子,从范围上,父范围小,子范围大:把范围小的给范围大的, JDK1.5改写了集合 ...

  9. 006 python操作符

    一:数值操作符 1.操作符 2.不同点 上面有了一个说法,这个 / 与其他的编程不同. 这个是精确的除法. 3.连续赋值 这种用法,第一次遇见,就记录下来. 4.注意点 重要的是要注意优先级的问题 二 ...

  10. day64 url用法以及django的路由系统

    此篇博客是以备后查的,用到的时候记得过来查找即可! 路由系统:就是我们的django项目创建的时候自带的那个urls.py 它本身里面是映射的对应关系,一个大的列表里面,一个个元祖,元祖里面是url或 ...