django发送邮件:send_mail()&send_mass_mail()

自强学堂

刘江的博客

HTTPS,TLS和SSL

django发送邮件及其相关问题

步骤 :

  0. 登录作为发送方的邮箱,开启smtp服务,一般需要设置授权码用于第三方登录

  1. settings.py中配置如下:

  1. # 邮件发送设置
  2. # 设置EMAIL_BACKEND确保使用的是smtp
  3. EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
  4. # 安全机制设置为SSL加密机制, 注意:SSL与TLS互斥, 不能同时设置为True
  5. EMAIL_USE_TLS = False # 不使用TLS安全传输协议, 默认为False, 写出来是为了清楚
  6. EMAIL_USE_SSL = True # 使用SSL加密
  7. EMAIL_HOST = 'smtp.163.com' # 发送邮件使用的smtp服务器
  8. EMAIL_PORT = 465 # 发件箱的smtp服务器端口号,使用了SSL加密后的端口号应为465或587,非加密则是25
  9. EMAIL_HOST_USER = 'eget_administrator@163.com' # 发送邮件的邮箱地址
  10. # 邮箱第三方登录用的授权码, 在对应的邮箱中进行设置开启
  11. EMAIL_HOST_PASSWORD = 'hjh2015190304' # EMAIL_HOST_USER的第三方登录授权码, 并非邮箱登录密码, 需要在邮箱中进行设置
  12. EMAIL_FROM = 'eget_administrator@163.com' # 发件人邮箱

  2. 发送邮件代码:一般使用封装了EmailMessage类的两个函数进行邮件发送,django.core.mail中的send_mail()和send_mass_mail(),关于二者的区别此处不赘述,可另查阅资料。

问题记录 (先简单记录发现过程及解决方案,有时间再重新整理)

1.如图所示:

如上错误信息,stackoverflow给出的回答:django2.1 send email fail:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:833)。同时附上一篇关于“发邮件的服务器端口号”来简单介绍smtp服务器的端口号及使用出错原因,还有一篇常用邮箱服务器地址(smtp、pop3)及端口号介绍,还有一篇电子邮件服务器扫盲——百度百科。

2. 关于django发送邮件的内容形式:纯文字、html。先奉上查到的解决方案:django发送html邮件django发送html邮件总结(详细)、django发送邮件官网文档翻译(已采用)

反面教材:如下代码中嵌入了html却没能按照预期的设想得到想要的结果,而是如图(滑稽.png)

  1. subject = ''
  2. message = ''
  3. if verify_type == 0:
  4. subject = '欢迎注册易得比价网:'
  5. message = '请点击以下链接以激活您的账号:\n <a href="http://127.0.0.1:8000/users/activate/' + code + \
  6. '" target="_blank">激活账号</a>'
  7. elif verify_type == 1:
  8. subject = '修改密码:'
  9. message = '请点击以下链接以修改密码:\n <a href="http://127.0.0.1:8000/users/chpwd/' + code + \
  10. '" target="_blank">修改密码</a>'
  11. elif verify_type == 2:
  12. subject = '换绑邮箱:'
  13. message = '请点击以下链接以换绑邮箱:\n <a href="http://127.0.0.1:8000/users/chemail/' + code + \
  14. '" target="_blank">换绑邮箱</a>'
  15. # 前四个参数是必填项
  16. send_mail(subject=subject, message=message, from_email=EMAIL_FROM, recipient_list=[email], fail_silently=False)

3. 链接生效时间设置:规定时间内访问链接有效,超过规定时间则失效

4. 在注册账号后,发现需要等待执行完发送邮件的代码才能进行下一步,用户体验糟糕,因此需要实现异步发送邮件,正在找资料……

毕业设计——Django邮件发送功能实现及问题记录的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  3. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  4. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  5. shell邮件发送功能实现

    本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...

  6. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  7. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  8. System.Net邮件发送功能踩过的坑

    System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...

  9. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

随机推荐

  1. [RHEL 7]ISCSI服务端及客户端连接配置

    环境RHEL7.4 1.搭建服务器端主机环境 网络配置 网卡eth0 10.0.0.1 网卡eth1 10.1.0.1 网卡eth2 10.2.0.1 网卡eth3 10.3.0.1 硬盘配置 添加一 ...

  2. JS去除掉字符串前后空格

    1. 推荐使用jquery已封装好的方法,非常简单 $.trim(str) jquery的内部实现如下, function trim(str){ return str.replace(/^(\s|\u ...

  3. 为什么区块链和加密行业需要 Web 3?

    为什么区块链和加密行业需要 Web 3? “由于人们都想从互联网上获得好处,互联网已经演变成了一个导致不公平和分裂的引擎,它被强大的力量所支配,并且任由其摆布.“——万维网之父.互联网先驱 Tim B ...

  4. CentOS 安装 ceph 单机版(luminous版本)

    一.环境准备 CentOS Linux release 7.4.1708 (Core)一台,4块磁盘(sda.sdb,.sdc.sdd) 192.168.27.130 nceph 二.配置环境 1.修 ...

  5. Pycharm 常用快捷键

    常用快捷键 快捷键 功能 Ctrl + Q 快速查看文档 Ctrl + F1 显示错误描述或警告信息 Ctrl + / 行注释(可选中多行) Ctrl + Alt + L 代码格式化 Ctrl + A ...

  6. WebSocket群聊与单聊

    一 . WebSocket实现群聊 py文件代码 # py文件 from flask import Flask, render_template, request from geventwebsock ...

  7. 虚拟机ubuntu设置静态IP与主机、外网互ping配置流程

    方案一.VMnet8(NAT模式) 1.选择自定义模式,VMnet8(NAT模式) 2.进入虚拟机,设置静态IP之前确认三者可互ping通,命令ifconfig,查看当前的IP 3.主机通过命令ipc ...

  8. SpringBoot配置mybatis

    一直都说SpringBoot是零配置,当然,真正实现零配置是不可能的,但是在配置mybatis这里真的是太简单了,哈哈,下面我们一起看一下. 1.先导入基于SpringBoot的mybatis依赖包 ...

  9. springdata 动态查询之排序

  10. Vue接口异常时处理

    一般接口只会对后台返回的json状态进行判断处理,当后台异常时,我们可以使用catch来对这些异常进行同样的报错处理. 例如: 上面显示代码例子中test为一个接口,json为后台正常返回的数据对象, ...