Django 发送html格式的邮件
django中默认提供了发送邮件的库mail,通过这个库我们可以很方便的通过django发送一份电子邮件
- 在setting 中指定邮件服务器的基本信息
EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.exmail.qq.com' # 如果是 163 改成 smtp.163.com EMAIL_PORT = 465 EMAIL_HOST_USER = '***@domain.com' # 帐号 EMAIL_HOST_PASSWORD = 'password' # 密码 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
1
2
3
4
5
6
7
|
EMAIL_USE_SSL
=
True
EMAIL_HOST
=
'smtp.exmail.qq.com'
# 如果是 163 改成 smtp.163.com
EMAIL_PORT
=
465
EMAIL_HOST_USER
=
'***@domain.com'
# 帐号
EMAIL_HOST_PASSWORD
=
'password'
# 密码
DEFAULT_FROM_EMAIL
=
EMAIL_HOST
_USER
|
- 引用mail库发送邮件
from django.core.mail import EmailMessage from Across.settings import EMAIL_HOST_USER msg = EmailMessage("邮件标题","邮件内容",EMAIL_HOST_USER,[接受邮件列表]) msg.send()
1
2
3
4
5
6
|
from
django
.
core
.
mail
import
EmailMessage
from
Across
.
settings
import
EMAIL_HOST_USER
msg
=
EmailMessage
(
"邮件标题"
,
"邮件内容"
,
EMAIL_HOST_USER
,
[接受邮件列表
]
)
msg
.
send
(
)
|
3.发送html模板邮件
可以利用Django的template库读取指定的html模板,然后将参数代入,首选需要在settings中设置template的目录
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR,'templates') ##你的模板目录 ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
TEMPLATES
=
[
{
'BACKEND'
:
'django.template.backends.django.DjangoTemplates'
,
'DIRS'
:
[
os.path
.
join
(
BASE_DIR
,
'templates'
)
##你的模板目录
]
,
'APP_DIRS'
:
True
,
'OPTIONS'
:
{
'context_processors'
:
[
'django.template.context_processors.debug'
,
'django.template.context_processors.request'
,
'django.contrib.auth.context_processors.auth'
,
'django.contrib.messages.context_processors.messages'
,
]
,
}
,
}
,
]
|
然后将你准备好的html模板放入该目录,然后就是利用temlate的loader函数加载模板传入指定参数
html_content = loader.render_to_string('email.html',{'authcode':random,'title':"标题标题",'operation':operation_str}) msg = EmailMessage("您的验证码",html_content,EMAIL_HOST_USER,[email]) msg.content_subtype = "html" # Main content is now text/html msg.send()
1
2
3
4
5
|
html_content
=
loader
.
render_to_string
(
'email.html'
,
{
'authcode'
:
random
,
'title'
:
"标题标题"
,
'operation'
:
operation_str
}
)
msg
=
EmailMessage
(
"您的验证码"
,
html_content
,
EMAIL_HOST_USER
,
[
email
]
)
msg
.
content_subtype
=
"html"
# Main content is now text/html
msg
.
send
(
)
|