我正在做一个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模板存在于正确的位置,并且文件名在视图中写入正确。此外,控制台或日志中不会显示任何错误。
为什么成功发送邮件后模板无法正确加载?是什么导致了这个问题?
谢谢你!
1条答案
按热度按时间pvcm50d11#
好吧,我想明白了...
在我添加的JavaScript代码中:
而views.py现在正像这样返回一个成功的html:
现在起作用了。