django已封装好了邮件发送功能,可以直接调用发送模块

1. 配置相关参数
如果用的是 阿里云的企业邮箱,则类似于下面: 在 settings.py 的最后面加上类似这些 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.tuweizhong.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'mail@tuweizhong.com'
EMAIL_HOST_PASSWORD = 'xxxx'
DEFAULT_FROM_EMAIL = 'mail@tuweizhong.com'
或者 EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = 'xxx@qq.com' # 帐号
EMAIL_HOST_PASSWORD = 'p@ssw0rd' # 密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True。 DEFAULT_FROM_EMAIL 还可以写成这样: 1
DEFAULT_FROM_EMAIL = 'tuweizhong <tuweizhong@163.com>'
这样别人收到的邮件中就会有你设定的名称,如下图: django_sendemail.png 下面是一些常用的邮箱: 163 邮箱 126 邮箱 QQ 邮箱 其它邮箱参数可能登陆邮箱看寻找帮助信息,也可以尝试在搜索引擎中搜索:"SMTP 邮箱名称",比如:"163 SMTP" 进行查找。 2. 发送邮件:
2.1 官网的一个例子: from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', 'from@example.com',
['to@example.com'], fail_silently=False)
2.2 一次性发送多个邮件: from django.core.mail import send_mass_mail message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com'])
message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com']) send_mass_mail((message1, message2), fail_silently=False)
备注:send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。 2.3 如果我们想在邮件中添加附件,发送 html 格式的内容 from django.conf import settings
from django.core.mail import EmailMultiAlternatives from_email = settings.DEFAULT_FROM_EMAIL
# subject 主题 content 内容 to_addr 是一个列表,发送给哪些人
msg = EmailMultiAlternatives(subject, content, from_email, [to_addr]) msg.content_subtype = "html" # 添加附件(可选)
msg.attach_file('./twz.pdf') # 发送
msg.send()
上面的做法可能有一些风险,除非你确信你的接收者都可以阅读 html 格式的 邮件。 为安全起见,你可以弄两个版本,一个纯文本(text/plain)的为默认的,另外再提供一个 html 版本的(好像好多国外发的邮件都是纯文本的) from __future__ import unicode_literals from django.conf import settings
from django.core.mail import EmailMultiAlternatives subject = '来自自强学堂的问候' text_content = '这是一封重要的邮件.' html_content = '<p>这是一封<strong>重要的</strong>邮件.</p>' msg = EmailMultiAlternatives(subject, text_content, from_email, [to@youemail.com]) msg.attach_alternative(html_content, "text/html") msg.send()

最新文章

  1. Android业务组件化之URL Scheme使用
  2. workspace路径有中文情况会报java.net.MalformedURLException: unknown protocol: d错误
  3. andriod studio
  4. 【转】IOS屏幕旋转与View的transform属性之间的关系,比较底层
  5. iOS开发中的错误整理,线程之间通信练习,加载图片的练习中出现的错误 -- Http请求错误
  6. java generic type
  7. js中构造字符串若放入Grails中gsp的&lt;g:link&gt;标签出错
  8. linux patch
  9. QF——网络之JSON解析和XML解析
  10. HDU 3374 String Problem (KMP+最小最大表示)
  11. 一起C语言中程序时序问题的排查过程
  12. php的几个内置的函数
  13. Java 浅拷贝和深拷贝的理解和实现方式
  14. IDF实验室-CTF训练营-牛刀小试CTF
  15. JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较
  16. Mybatis学习(二)————— 全局配置文件详解
  17. 【51nod 1191】消灭兔子
  18. python 对象转字典
  19. Spring Cloud集成EDAS(替代Eureka)
  20. MDX Step by Step 读书笔记(八) - Navigating Hierarchies 层次结构导航

热门文章

  1. MySQL C API概述
  2. vue中element-ui树形控件自定义节点,注意一下
  3. ASP.NET MVC 4 笔记
  4. zookeeper的作用
  5. c# 适配器批量修改
  6. Bootstrap响应式导航
  7. ue4动画蓝图
  8. visual studio code运行时报错,无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,Cannot find module &#39;webpack&#39;
  9. Spark思维导图之Shuffle
  10. java调试与排错