为了账号安全,请及时绑定邮箱和手机立即绑定

Django HTML 表单发送附件电子邮件

Django HTML 表单发送附件电子邮件

慕桂英4014372 2021-11-30 19:23:51
我在使用此导入时遇到以下问题from django.core.mail.message import EmailMessage我的代码看起来像这样:if request.method == 'POST':    email = EmailMessage()    email.subject = "Test"    email.body = mainMessage    email.from_email = "SMTP <XXX@XXX.net>"    email.to = [ "XXX@XXX.net" ]    email.attach_file(file)    email.send()我检查我的文件:if 'file' in request.FILES:    file = request.FILES['file']else:    file = False这就是我的 HTML 的样子<form method="post" action="{% url 'myurl' %}" enctype="multipart/form-data">                {% csrf_token %}    <input type="file" name="file" required><br>    <input type="submit" name="submit" value="Submit"></form>如果我选择一个文件,我怎样才能让它作为该电子邮件的附件发送?如果我删除email.attach_file(file)它工作得很好,但只发送文本。
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

if request.method == 'POST' and request.FILES['file']:

    file = request.FILES['file'] 

    if (str(file.content_type) == 'image/jpeg' 

       or str(file.content_type) == 'image/png'):

        if (int(file.size) <= 5000000):

            fs = FileSystemStorage()

            filename = fs.save('YOUR_DIRECTORY/' + file.name, file)


            email = EmailMessage()

            email.subject = "XXX | Bildupload"

            email.body = mainMessage

            email.from_email = "SMTP <xxx@xxx.net>"

            email.to = ["xxx@xxx.net"]

            email.attach_file(filename)

            email.send()


            answer = 'Die Datei wurde erfolgreich hochgeladen'

            errorAnswer = ''

            return render(request, 'app/hochladen.html', {

                'answer': answer

            })

        else:

            errorAnswer = 'Der Upload hat nicht funktioniert.' 

    else:

        errorAnswer = 'Der Upload hat nicht funktioniert.'

    return render(request, 'app/hochladen.html', {

        'errorAnswer': errorAnswer

    })

如果有人想知道如何做到这一点,可以使用上面发布的代码。您可以删除第二个和第三个 if 语句,因为它们会检查大小和文件类型。


我找到的唯一答案是首先将文件上传到服务器,然后从那里访问它。虽然我不知道如何在发送电子邮件并附加后删除它。


并且您需要正确配置 settings.py 并添加一个 /media/ 文件夹。


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信