zoukankan      html  css  js  c++  java
  • Django 发送邮件

    Django 发送邮件

    本章节涉及django的发邮件模块send_mail、send_mass_mail、EmailMultiAlternatives

    from django.core.mail import send_mail

    from django.core.mail import send_mass_mail

    from django.core.mail import EmailMultiAlternatives

    1. 配置相关参数

    如果用的是 163的企业邮箱,settings配置类似于下面:

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
      
    EMAIL_USE_TLS = False
    EMAIL_HOST = 'smtp.163.com'
    EMAIL_PORT = 25
    EMAIL_HOST_USER = 'from@163.com'
    EMAIL_HOST_PASSWORD = 'xxxx'
    DEFAULT_FROM_EMAIL = 'from@163.com'
    DEFAULT_FROM_EMAIL 还可以写成这样:
    DEFAULT_FROM_EMAIL = 'from<from@163.com>'

    这样别人收到的邮件中就会有你设定的名称,如下形式:

         发件人:from<from@163.com>

    下面是一些常用的邮箱:

    163 邮箱    126 邮箱    QQ 邮箱 

    其它邮箱参数可能登陆邮箱看寻找帮助信息,也可以尝试在搜索引擎中搜索:"SMTP 邮箱名称",比如:"163 SMTP" 进行查找。

    qq和163都容易失败,不是技术的问题。建议使用阿里或腾讯企业邮箱来尝试。

    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()
     
  • 相关阅读:
    装饰器详解
    面试题求 平衡点
    Python面试题
    With语句上下文管理
    多个装饰器修饰一个函数
    NGINX部署配置参考.
    Django ORM操作
    MYsql 之多表查询.
    [数据结构与算法] : 二叉查找树
    [数据结构与算法] : 队列
  • 原文地址:https://www.cnblogs.com/mocean/p/6791653.html
Copyright © 2011-2022 走看看