Django 发送html格式的邮件

2017/11/29 posted in  Django学习

django中默认提供了发送邮件的库mail,通过这个库我们可以很方便的通过django发送一份电子邮件

1. 在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
2. 引用mail库发送邮件
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',
            ],
        },
    },
]

然后将你准备好的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()