Django_发送邮件
使用django邮箱功能需要搭建smtp服务器,如果没有,可以使用第三方smtp服务器。
本文以第三方QQ邮箱服务器演示如何使用python的smtplib+email完成邮箱发送功能。
一、开启SMTP服务并获取授权码
具体参考 email + smtplib使用简介。
二、在Django的配置文件中添加邮箱服务配置
# 设置使用django的smtp配置(固定值) EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # smpt服务地址(根据选择smtp服务器配置) EMAIL_HOST = 'smtp.qq.com' # 邮箱端口(在django中是固定值) EMAIL_PORT = 25 # 发送邮件的邮箱 EMAIL_HOST_USER = '41XXXXX67@qq.com' # 在邮箱中设置的客户端授权密码(第一步获取的授权码) EMAIL_HOST_PASSWORD = 'spisXXXXXtbidj' # 邮箱中显示的发件人(必须与EMAIL_HOST_USER 的值一致) EMAIL_FROM = '41XXXXX67@qq.com'
三、发送邮箱代码
import os from dailyfresh import settings from django.core.mail import EmailMultiAlternatives # 导入配置django配置文件 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings') subject = 'Django邮件调试' # 邮件标题 message = 'test' # 发送内容 sender = settings.EMAIL_FROM # 发送人 receiver = ["XXXX@qq.com"] # 收件人 cc_receiver = ["41XXXXX67@qq.com"] # 抄送人 _email = EmailMultiAlternatives(subject=subject, body=message, from_email=sender, to=receiver, cc=cc_receiver) # 添加html内容(注:如果添加了html内容,message的内容不会被发送) html_msg = "<div><h1>H1标签</h1></div><div><h3>H3标签</h3></div>" _email.attach_alternative(html_msg, "text/html") # 添加附件 with open("./test.pdf", "rb") as f: content = f.read() attach_file_name = "attach_file1.pdf" # 邮箱中显示的附件名称 _email.attach(attach_file_name, content) # 添加多个附件,多次调用attach方法即可 attach_file_name = "attach_file2.pdf" _email.attach(attach_file_name, content) # 发送邮件 _email.send()
接收邮件如下: