利用django实现发送QQ邮箱入门

本文介绍如何使用Django框架配置并发送电子邮件,包括文本邮件及HTML格式邮件的发送方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:开启邮箱的SMTP服务,获取其授权密码

方法:打开请求邮箱–>点击设置–>进入账户设置–>下滑找到SMTP服务并打开–>复制生成的授权码

在这里插入图片描述
–>将授权码复制
在这里插入图片描述

第二步:设置setting.py,将邮箱的信息设置好来

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# smpt服务地址
EMAIL_HOST = 'smtp.qq.com'
# 端口号
EMAIL_PORT = 25
# 发送邮件的邮箱
EMAIL_HOST_USER = '你的QQ号@qq.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = '填刚刚的那个授权密码'
# 收件人看到的发件人
EMAIL_FROM = 'django<你的QQ号@qq.com>'

第三步:发送文本文件(一般再view写代码,具体情况具体使用)

关键步骤:

1、导入send_mail方法:from django.core.mail import send_mail
2、使用send_mail方法发送邮件:

send_mail(subject=邮件主题, message=邮件内容, from_email=settings.EMAIL_FROM, recipient_list=[发送给],fail_silently=False)
具体代码:

发送邮件html页面:sendMail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="" method="post">
    {% csrf_token %}
     <table>
         <tr>
             <td>发送至:</td>
             <td><input type="email" name="sendTo" placeholder="请输入邮箱"></td>
         </tr>
         <tr>
             <td>发送主题:</td>
             <td><input type="text" name="sendSubject" placeholder="请输入邮件主题"></td>
         </tr>
     </table>
    发送内容:<br />
    <textarea name="context" placeholder="开始输入..." rows="10" cols="30"></textarea> <br />
    <input type="submit" value="发送">
    <input type="reset" value="取消">
</form>
</body>
</html>

form表单:forms.py

from django import forms

class mailForm(forms.Form):
    sendTo = forms.EmailField(label='发送至:', max_length=20)
    sendSubject = forms.CharField(label='发送主题:', max_length=50)
    context = forms.CharField()

视图函数:views.py

from django.shortcuts import render
from django.views.generic import View
from .forms import mailForm
from django.conf import settings
from django.core.mail import send_mail

class sendMailView(View):
    def get(self, request):
        form = mailForm()
        return render(request, 'sendMail.html')
        
    def post(self, request):
        form = mailForm(request.POST)
        if form.is_valid():
            sendTo = form.cleaned_data['sendTo']
            sendSubject = form.cleaned_data['sendSubject']
            context = form.cleaned_data['context']
            send_mail(subject=sendSubject, message=context, from_email=settings.EMAIL_FROM, recipient_list=[sendTo],fail_silently=False)
        return render(request, 'sendMail.html')

配置app路由:urls.py

from django.urls import path
from . import views

app_name = 'sendmail'
urlpatterns = [
    path('', views.sendMailView.as_view(), name='sendMail'),
]

配置项目路由:

from django.urls import path, include

urlpatterns = [
    path('sendmail/', include('sendmail.urls')),
]

其他:若发送的是html页面,其步骤如下:

基本操作和上面一样
不同点:准备好邮件的html模板,以及使用EmailMessage(subject, html_content, settings.EMAIL_HOST_USER, recipient_list)来管理邮件信息

邮件渲染页面:email.htm

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件</title>
</head>
<body>
    <h1 style="color: pink">主题:{{ mailSubject }}</h1>
    <h2 style="color: rosybrown">发送人:{{ sender }}</h2>
    <h3 style="color: darkcyan">发送内容:{{ mailcontext }}</h3>
</body>
</html>

视图函数:

from django.shortcuts import render
from django.views.generic import View
from .forms import mailForm
from django.conf import settings
from django.core.mail import EmailMessage
from django.template import loader    // 用来加载html模板页面

class sendHtmlMailView(View):
    def get(self, request):
        form = mailForm()
        return render(request, 'sendMail.html')

    def post(self, request):
        form = mailForm(request.POST)
        if form.is_valid():
            sendTo = form.cleaned_data['sendTo']
            sendSubject = form.cleaned_data['sendSubject']
            context = form.cleaned_data['context']
            // 要发送的html邮件
            html_content = loader.render_to_string(
                'email.html',    // 渲染模板
                {
                    'mailSubject' : sendSubject,    // 参数
                    'sender' : settings.EMAIL_HOST_USER,
                    'mailcontext' : context
                }
            )
            send_html_mail(subject=sendSubject, html_content=html_content, recipient_list=[sendTo])
        return render(request, 'sendMail.html')

// 定义了一个方法,用来发送html邮件
def send_html_mail(subject, html_content, recipient_list):
	// 参数:邮件主题、html代码、发送人、接收人列表
    msg = EmailMessage(subject, html_content, settings.EMAIL_HOST_USER, recipient_list)
    msg.content_subtype = "html"   // 设置邮件信息类型为html
    msg.send()   // 发送邮件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值