虽然我使用Mailgun作为我的SMTP网关,但这个问题特别涉及Django和表单 .

用户向something@mydomain.com发送电子邮件 . 主题以“另一个”开头 . 该邮件被MailGun拦截 . MailGun为我的代码创建一个POST . 我的代码应该接收该电子邮件并将其转发到another@mydomain.com(主题的第一个单词),其中包含以下要求:

  • 从主题行中删除"another" .

  • 将FROM设置为发送电子邮件的人员

  • 保留电子邮件正文中的所有文本(html或plain) .

  • 保留原始电子邮件中的所有附件 .

听起来很简单,但我遇到了发送多个附件的问题 . 而且,我甚至没有试图找出#1和#3 . (是的,我对此很新 . )

这是我到目前为止:

@public
@csrf_exempt
def send_email(request):
    if request.method == 'POST':
        mail_data = request.FILES
        sender    = request.POST.get('sender')
        subject   = request.POST.get('subject', '')
        bodyhtml   = request.POST.get('body-html', 'i am not found')
        mail = EmailMultiAlternatives(subject, bodyhtml, sender, ["another@mydomain.com"])
        for field, value in mail_data.items():
            mail.attach(value.name, value.read(), value.content_type)
        mail.content_subtype = "html"
        mail.send()
    else:
        # Just for my own testing.
    return HttpResponse('Not Posted')

    return HttpResponse('OK')

你能帮我修改一下这样我可以附加多个文件吗?我可以弄清楚其他项目(但如果你有任何建议,将不胜感激) . 我也知道任何人都可以发送电子邮件,这是一个安全风险 . 我打算在实际发送任何电子邮件之前检查FROM地址 . 这应该解决这个问题,但是,如果你有任何建议值得赞赏的话 .

谢谢