这里用的163邮箱测试,其他邮箱可能会有不同问题,代码粘贴注意调整格式.
1,建立django项目
2,在项目setting.py文件末中加上以下配置
# smtp服务的邮箱服务器
EMAIL_HOST = 'smtp.163.com'
# smtp服务固定的端口是25
EMAIL_PORT = 25
#发送邮件的邮箱
EMAIL_HOST_USER = 'xxxxxx@163.com'
#在邮箱中设置的客户端授权密码,不会自行百度
EMAIL_HOST_PASSWORD = 'xxxxxx'
#收件人看到的发件人 <此处要和发送邮件的邮箱相同>
EMAIL_FROM = 'python<xxxxxx@163.com>'
3,在app中配置路由,视图函数,模板下建立渲染模板,发送邮件
#1,先在项目的urls.py 文件中包含上APP的路由
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^app/',include('app.urls',namespace='app'))
]
#2,在APP中建立的urls.py文件,配置邮件发送路由
from django.conf.urls import url, include
from django.contrib import admin
from app import views
urlpatterns = [
#邮件发送
url(r'sendone/$',views.sendOne,name='one'),
url(r'sendmany/$',views.sendMany,name='many'),
url(r'sendhtml/$',views.sendHtml,name='mailhtml')
]
#3,在APP的views.py建立上面三个路由的视图函数
from django.core.mail import send_mail
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
from youjianfasong import settings
def sendOne(request):
#send_mail的四个参数分别是:邮件标题,邮件内容,发送者邮箱,发送对象列表.
send_mail('发送单封邮件','邮件内容,你看到就是发送成功',settings.EMAIL_HOST_USER,['ccccc@qq.com','scqhh@yeah.net'])
return HttpResponse('发送单封邮件')
#4,执行一下文件python manage.py runserver 8024,打开网页http://127.0.0.1:8024/app/sendone/,看到返回
发送单封邮件,说明执行没问题,邮件发送成功了,如果没有收到有可能是被拦截在垃圾箱里面.
#5发送多个对象,多种内容用send_mass_mail,和上面单发一样的步骤,代码:
def sendMany(request):
one = ('标题','内容',settings.EMAIL_HOST_USER,['1778888888883@163.com'])
two = ('葫芦岛','死5人伤10人',settings.EMAIL_HOST_USER,['lianpoiuji314@163.com'])
send_mass_mail((one,two))
return HttpResponse("群发")
#6发送html链接邮件用EmailMultiAlternatives,需要在模板templates下先建立一个html文件,下面发送一样的步骤:
#html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>激活</title>
</head>
<body>
欢迎{{ username }}回来,请点击右侧的链接激活 <a href="http://127.0.0.1/app/sendone/{{ username }}/">激活</a>
</body>
</html>
#发送邮件代码
def sendHtml(request):
#只需要修改收件人邮箱cq85895dfh@yeah.net,active.html,'username': "小路迢迢"
subject, from_email, to = 'html', settings.EMAIL_FROM, 'scq85895dfh@yeah.net'
from django.template import loader
html_content = loader.get_template('active.html').render({'username': "小路迢迢"})
msg = EmailMultiAlternatives(subject, from_email=from_email, to=[to])
msg.attach_alternative(html_content, "text/html")
msg.send()
return HttpResponse("html邮件")