2018-07-01-django-18-邮件发送

django邮件发送

#在项目里的配置文件settings.py中进行一些配置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False   #是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性。)
EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用
EMAIL_HOST = 'smtp.163.com'   #发送邮件的邮箱 的 SMTP服务器,这里用了163邮箱
EMAIL_PORT = 25     #发件箱的SMTP服务器端口
EMAIL_HOST_USER = 'charleschen@xmdaren.com'    #发送邮件的邮箱地址
EMAIL_HOST_PASSWORD = '*********'         #发送邮件的邮箱密码(这里使用的是授权码)

https://docs.djangoproject.com/zh-hans/2.0/topics/email/

#在views.py中制作一个简单的邮件并发送:

from django.core.mail import send_mail  
# send_mail的参数分别是  邮件标题,邮件内容,发件箱(settings.py中设置过的那个),
收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们)
send_mail('Subject here', 'Here is the message.', 'charleschen@xmdaren.com',
    ['to@example.com'], fail_silently=False)
例子:
#----项目settings.py-----

#-----email--config-----

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False   #是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性。)
EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用
EMAIL_HOST = 'smtp.qq.com'   #发送邮件的邮箱 的 SMTP服务器,这里用了QQ邮箱
EMAIL_PORT = 465     #发件箱的SMTP服务器端口
EMAIL_HOST_USER = '905690216@qq.com'    #发送邮件的邮箱地址
EMAIL_HOST_PASSWORD = 'aecxiybyjgekbgae'         #发送邮件的邮箱密码(这里使用的是授权码)
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
#----t8\views.py---

from django.core.mail import send_mail, send_mass_mail
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from django.views import View


class SendMyEmail(View):
    def get(self,request):
      """普通邮件的发送"""
        subject = '入职通知'
        message = '恭喜你成功入职阿里,称为我们的一员'
        from_email = '905690216@qq.com'
        recipient_list = ['zx1005053430@163.com','912200556@qq.com']


        send_mail(subject,message,from_email,recipient_list)
        # send_mail的参数分别是  邮件标题,邮件内容,
        # 发件箱(settings.py中设置过的那个),
        # 收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们)
        #(subject, message, from_email, recipient_list,
        #      fail_silently=False, auth_user=None, auth_password=None,
        #      connection=None, html_message=None)

        return HttpResponse("邮件发送成功")



def send_emailss(req):
    """多封普通邮件的发送"""

    subject = '入职通知'
    message = '恭喜你成功入职阿里,称为我们的一员'
    from_email = '905690216@qq.com'
    recipient_list = ['zx1005053430@163.com', '912200556@qq.com']

    subject1 = '入职通知'
    message1 = '恭喜你成功入职阿里,称为我们的一员'
    from_email1 = '905690216@qq.com'
    recipient_list1 = ['2937524077@qq.com', '3393758538@qq.com']



    senders1 = (subject, message, from_email, recipient_list)
    senders2 = (subject1, message1, from_email1, recipient_list1)
    send_mass_mail((senders1, senders2), fail_silently=False)
    return HttpResponse("OK")

send_mail和send_mass_mail的区别

​ send_mail每次都连接SMTP服务

​ send_mass_mail 连一次就可以发多个

发送html的邮件
发送替代内容类型

在电子邮件中包含多个版本的内容可能很有用; 经典的例子是发送消息的文本和HTML版本。使用Django的电子邮件库,您可以使用EmailMultiAlternatives 该类来完成此操作。这个子类EmailMessage有一个 attach_alternative()在邮件中包含额外版本的邮件正文的方法。所有其他方法(包括类初始化)都直接从中继承EmailMessage。

要发送文本和HTML组合,您可以编写:

from django.core.mail import EmailMultiAlternatives


def email_html(req):
  subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
  text_content = 'This is an important message.'
  html_content = '<p>This is an <strong>important</strong> message.</p>'
  msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
  msg.attach_alternative(html_content, "text/html")
  msg.send()
  return HttpResponse("OK")

默认情况下,is 中的body参数 的MIME类型。这是一个很好的做法,因为它保证了任何收件人都能够阅读邮件,而不管他们的邮件客户端。但是,如果您确信收件人可以处理替代内容类型,则可以使用该类上的属性 来更改主要内容类型。主要类型将始终是,但您可以更改子类型。例如:EmailMessage"text/plain"``content_subtypeEmailMessage"text"

msg = EmailMessage(subject, html_content, from_email, [to])
msg.content_subtype = "html"  # Main content is now text/html
msg.send()

邮箱验证码

​ 1 生成验证码

​ 2 准备邮件内容 拼接验证url

​ 3 发送邮件

​ 4 拿到url里的那个token

​ 5 改变邮箱对应用户的状态

生成验证连接发送邮件

#---views.py---------

from django.core.mail import EmailMultiAlternatives

def get_verify_code(req):
""" 01 给邮箱发送html类型的邮件,之后在html页面中用a标签实现跳转"""
    param = req.GET
    email = param.get('email')
    name = param.get('name')

    #生成验证码
    token = myutil.get_token()
    #拼接验证连接
    verify_url = "http://mhh4399.com:8888/verify/"+token
    #保存验证码
    cache.set(token,email,60)
    #发送邮件
    title = "欢迎注册1806会员"
    message = "请将链接复制到浏览器访问{url}".format(
        url=verify_url
    )
    email_from = "912200556@qq.com"

    html_content = '<a href={url}> {url} </a>'.format(url=verify_url)
 
    msg = EmailMultiAlternatives(title, message, email_from, [email])
    msg.attach_alternative(html_content, "text/html")
    msg.send()

    # send_mail(title,message,email_from,[email])
    return HttpResponse("注册成功,请查看激活邮件")
    
    
def verify(req,token):
"""02  成功从邮件链接跳转过来,后验证邮箱是否正确"""
    email = cache.get(token)
    if email:
        return HttpResponse("修改用户状态,可以使用"+email)
    else:
        return HttpResponse("验证链接不正确")


#-----urls.py----------


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^email$',views.send_my_mail),
    url(r'^ems$',views.send_emailss),
    url(r'^htmlems$',views.email_html),
    url(r'^test$',evs.get_verify_code),
    url(r'^verify/(.+)',evs.verify),
]
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值