Django——发送邮件
在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件。
所有的功能都在django.core.mail中。
记录一个简单的示例
1.配置
首先获取邮箱的授权码(以新浪邮箱为例)
然后是settings.py的配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.sina.com' # 中间的“sina”改为你用的邮箱服务 EMAIL_PORT = 465 EMAIL_HOST_USER = '邮箱账号' EMAIL_HOST_PASSWORD = '授权码' EMAIL_USE_SSL = True DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
"""EMAIL_USE_TLS和EMAIL_USE_SSL都默认设置为False,需要配置其中一个为True,但是不能两个都设置为True。 一般端口587对应TLS,端口465对应SSL(加强TSL)"""
2.路由
from django.urls import path from email import views urlpatterns = [ path('admin/', admin.site.urls), path('send_email/', views.send_email) ]
3.视图
from myemail import settings from django.core.mail import EmailMultiAlternatives # 这个可以发送HTML,如果只发送文本,导入send_mail即可 def send_email(request): subject = '测试邮件' # 邮件主题 from_email = settings.EMAIL_HOST_USER # 发件的邮箱 to = 'to@example.com' # 收件的邮箱 text_content = '如果你看到这条消息,说明你的邮箱服务器不提供HTML链接功能' # 如果目标邮箱不能接受html时的替换内容 html_content = "<a href='http://www.baidu.com'>搜索一下</a>" # html邮件内容 msg = EmailMultiAlternatives(subject,text_content,from_email,[to]) msg.attach_alternative(html_content,'text/html') # 给邮件绑定html内容 mag.send() return HttpResponse('邮件已发送')
终日不为以思,无益,不如学也