在Django中发送电子邮件后加载HTML模板的问题

sqxo8psd  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(106)

我正在做一个Django项目,我需要在提交表单后发送电子邮件。我已经使用smtplib模块实现了电子邮件发送功能。电子邮件发送成功,但之后,我无法加载相应的HTML模板(delivery_email_success. html)。
下面是我的视图中的相关代码:

def enviar_email(request):
if request.method == 'POST':
    # Process data and prepare the email
    try:
        # Email setup and sending
        # ...
        server.quit()
    except smtplib.SMTPException as e:
        return render(request, 's3_error.html')
    
    print('Now rendering the success')
    return render(request, 'delivery_email_success.html')
else:
    return HttpResponse(status=405)

下面是提交表单并调用此函数的HTML部分:

const emailForm = document.getElementById('email-form');
emailForm.addEventListener('submit', (event) => {
    event.preventDefault();

    const visibleRows = document.querySelectorAll('.result-row');
    const data = [];

    visibleRows.forEach(row => {
        const rowData = {
            title: row.querySelector('td:nth-child(2)').textContent,
            catalog: row.querySelector('td:nth-child(3)').textContent,
            folder: row.querySelector('td:nth-child(4)').textContent,
            assets: row.querySelector('td:nth-child(5)').textContent,
            package: row.querySelector('td:nth-child(6)').textContent,
            sk: row.querySelector('td:nth-child(7)').textContent
        };

        data.push(rowData);
    });

    const emailBody = tinymce.activeEditor.getContent({ format: 'html' });

    const formData = new FormData();
    formData.append('email_body', emailBody);
    formData.append('data', JSON.stringify(data));

    const csrfToken = document.querySelector('input[name="csrfmiddlewaretoken"]').value;
    formData.append('csrfmiddlewaretoken', csrfToken);

    fetch("{% url 'email_delivery' %}", {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(result => {
        // Manejar la respuesta del servidor
    })
    .catch(error => {
        // Manejar errores
    });
});

我已经验证了delivery_email_success. html模板存在于正确的位置,并且文件名在视图中写入正确。此外,控制台或日志中不会显示任何错误。
为什么成功发送邮件后模板无法正确加载?是什么导致了这个问题?
谢谢你!

pvcm50d1

pvcm50d11#

好吧,我想明白了...
在我添加的JavaScript代码中:

.then(result => {
        if (result.success) {
            alert('¡El correo electrónico se ha enviado correctamente!');
            // Redirigir a la página deseada
            window.location.href = "{% url 'enviar_email' %}";
        } else {
            alert('Ha ocurrido un error al enviar el correo electrónico.');
            // Manejar el error de envío de correo
        }
    })

而views.py现在正像这样返回一个成功的html:

return JsonResponse({'success': True})

现在起作用了。

相关问题