虽然我使用 Mailgun 作为我的 SMTP 网关,但这个问题特别与 Django 和表单有关。
用户向某事@mydomain.com 发送电子邮件。主题以文本“另一个”开头。邮件被 MailGun 拦截。MailGun 为我的代码创建一个 POST。我的代码应该接收该电子邮件并将其转发到 another@mydomain.com(主题的第一个单词),并具有以下要求:
- 从主题行中删除“另一个”。
- 将 FROM 设置为发送电子邮件的人
- 保留电子邮件正文中的所有文本(html 或纯文本)。
- 保留原始电子邮件中的所有附件。
听起来很简单,但我在发送多个附件时遇到了问题。而且,我什至没有试图弄清楚#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 地址。那应该可以解决这个问题,但是,如果您有任何建议,我们将不胜感激。
谢谢