Django15-发邮件

Django 发送邮件

我们常常会用到一些发送邮件的功能,比如有人提交了应聘的表单,可以向HR的邮箱发邮件,这样,HR不看网站就可以知道有人在网站上提交了应聘信息。

1. 配置相关参数

如果用的是 阿里云的企业邮箱,则类似于下面:

在 settings.py 的最后面加上这些

1
2
3
4
5
6
7
8
EMAIL_BACKEND  =  'django.core.mail.backends.smtp.EmailBackend'
  
EMAIL_USE_TLS  =  False
EMAIL_HOST  =  'smtp.tuweizhong.com'
EMAIL_PORT  =  25
EMAIL_HOST_USER  =  '[email protected]'
EMAIL_HOST_PASSWORD  =  'xxxx'
DEFAULT_FROM_EMAIL  =  '[email protected]'

DEFAULT_FROM_EMAIL 还可以写成这样:

1
DEFAULT_FROM_EMAIL  =  'tuweizhong '

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

django_sendemail.png

下面是一些常用的邮箱:

163 邮箱    126 邮箱    QQ 邮箱 

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

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

2. 发送邮件:

2.1 官网的一个例子:

1
2
3
4
from  django.core.mail  import  send_mail
 
send_mail( 'Subject here' 'Here is the message.' '[email protected]' ,
     [ '[email protected]' ], fail_silently = False )

2.2 一次性发送多个邮件:

1
2
3
4
5
6
7
8
from  django.core.mail  import  send_mass_mail
 
 
message1  =  ( 'Subject here' 'Here is the message' '[email protected]' , [ '[email protected]' '[email protected]' ])
message2  =  ( 'Another Subject' 'Here is another message' '[email protected]' , [ '[email protected]' ])
 
 
send_mass_mail((message1, message2), fail_silently = False )

备注:send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。


2.3 如果我们想在邮件中添加附件,发送 html 格式的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 版本的(好像好多国外发的邮件都是纯文本的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from  __future__  import  unicode_literals
 
from  django.conf  import  settings
from  django.core.mail  import  EmailMultiAlternatives
 
subject  =  '来自自强学堂的问候'
 
text_content  =  '这是一封重要的邮件.'
 
html_content  =  '

这是一封重要的邮件.

'
 
msg  =  EmailMultiAlternatives(subject, text_content, from_email, [[email protected]])
 
msg.attach_alternative(html_content,  "text/html" )
 
msg.send()

你可能感兴趣的:(Django,django)