Django邮件发送 注册登录
一、邮件发送
设置临时环境变量
windows下
设置
set 名称=值
获取
set 名称
Linux下
设置
export 名称=值
获取
echo $名称
实例:
export xlg=lucky
echo $xlg
配置settings.py
# 配置发送邮件所需的配置
EMAIL_HOST = 'smtp.1000phone.com' # smtp服务器
EMAIL_HOST_PASSWORD = os.environ.get('MAIL_PASSWORD') # 邮箱密码或授权码
EMAIL_HOST_USER = os.environ.get('MAIL_USER') # 用户名
(1) 发送单人邮件
# 发送一封邮件
# 发送纯文本邮件
"""
def sendMail(req):
send_mail(
'帅气的lucky老师啊',
'买个冰送个棍 一口一个大牙印 学习python找lucky老师',
# settings.EMAIL_HOST_USER,
os.environ.get('MAIL_USER'),
['[email protected]'],
fail_silently=False,
)
return HttpResponse('发送邮件')
"""
# 发送纯html邮件
def sendMail(req):
send_mail(
'帅气的lucky老师啊',
'',
os.environ.get('MAIL_USER'),
['[email protected]'],
html_message = '<a href="http://www.codingke.com">扣丁课堂</a>',
fail_silently=False,
)
return HttpResponse('发送邮件')
(2) 发送多人邮件
# 发送多人邮件
def send_many_email(req):
message1 = ('Subject here', 'Here is the message', os.environ.get('MAIL_USER'), ['[email protected]', '[email protected]'])
# message2 = ('Another Subject', 'Here is another message', '[email protected]', ['[email protected]'])
send_mass_mail((message1,), fail_silently=False)
return HttpResponse('给多人发送邮件')
datatuple = (
('Subject', 'Message.', '[email protected]', ['[email protected]']),
('Subject', 'Message.', '[email protected]', ['[email protected]']),
)
send_mass_mail(datatuple)
注意:
只能发送文本邮件 不能发送html-message html内容
send_mail与send_mass_mail的区别
send_mass_mail()和send_mail()的主要区别在于send_mail()每次执行时都会打开与邮件服务器的连接,而send_mass_mail()对所有邮件都使用一个连接。这使得发送\u mass\u mail()的效率略高
(3) 发送多人HTML邮件
# 发送多人 HTML格式的邮件
def ema(req):
subject, from_email, to = 'hello', os.environ.get('MAIL_USER'), '[email protected]'
text_content = ''
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('发送邮件')
二、登录注册
注册功能步骤:
- 创建用户模型
- 创建视图路由地址和视图函数
- 创建模板
- 数据进行处理
- token值进行邮件激活的发送
- 渲染邮件激活模板
- 邮件激活
- 改变用户状态
(1) 创建注册用户的模型
# 用户表
class User(models.Model):
username = models.CharField(max_length=20,unique=True,db_index=True,default='lucky',verbose_name='用户名')
password_hash = models.CharField(max_length=140)
sex = models.BooleanField(default=True,verbose_name='性别')
age = models.IntegerField(default=18,verbose_name='年龄')
email = models.CharField(max_length=50