0

我在 django 4 上创建了一个网站,并且我有一个包含许多输入的表单。我想发送一封 HTML 格式的电子邮件,并在我的邮件中附加“照片”文件。我已经编写了代码,并且在 stackoverflow 上阅读了许多主题,但都没有成功。

这是我的forms.py:

class FantasyForm(forms.Form):

madame = forms.CharField(label="Madame", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Madame *'}))
monsieur = forms.CharField(required = False, label="Monsieur", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Monsieur'}))
age = forms.ChoiceField(required = True, choices=YEAR_CHOICES, widget=forms.RadioSelect())
photo = forms.ImageField(required = True, label="Une photo ?", widget=forms.FileInput())
site_q = forms.ChoiceField(required = True, label="As tu un pseudo sur un site de rencontre ?",choices=SITE_CHOICES, widget=forms.RadioSelect())
site_c = forms.ChoiceField(required = False, label="Sur lesquels ?",choices=SITE2_CHOICES, widget=forms.CheckboxSelectMultiple())
site_pseudo = forms.CharField(required = False, label="Votre pseudo", help_text="", widget=forms.TextInput())
rech_tu = forms.ChoiceField(required = True, label="Que recherche tu ?",choices=RECHTU_CHOICES, widget=forms.CheckboxSelectMultiple())
content = forms.CharField(label="Parle nous de ton fantasme (1000 caracteres maxi)", help_text="", widget=forms.Textarea())
when = forms.DateTimeField(label="Quand ça ?")
phone = forms.CharField(label="Téléphone", help_text="", widget=forms.TextInput())
email = forms.CharField(required = False, label="Email", help_text="", widget=forms.TextInput())

class Meta:
    fields = ('madame', 'monsieur','age','photo','site_q','site_c','site_pseudo','rech_tu','content','when','phone','email')

这是我的views.py:

def page_fantasme(request):
    if request.method == "POST":
        form = FantasyForm(request.POST,request.FILES)
        if form.is_valid():
            madame = request.POST.get('madame', '')
            monsieur = request.POST.get('monsieur', '')
            age = request.POST.get('age', '')
            photo = request.FILES.get('photo', '')
            site_q = request.POST.get('site_q', '')
            site_c = request.POST.get('site_c', '')
            site_pseudo = request.POST.get('site_pseudo', '')
            rech_tu = request.POST.get('rech_tu', '')
            content = request.POST.get('content', '')
            when = request.POST.get('when', '')
            phone = request.POST.get('phone', '')
            mail = request.POST.get('email', '')
            subject = 'Subject'
            html_message = render_to_string('email/fantasy.html', {'form': 'form'})
            plain_message = strip_tags(html_message)
            from_email = 'From <from@example.com>'
            to = 'to@example.com'
            if request.FILES:
                uploaded_file = request.FILES['photo']
                mail.attach(uploaded_file.name, uploaded_file.read(), uploaded_file.content_type)
            mail.send_mail(subject, plain_message, from_email, [to], html_message=html_message)
            return redirect('page_fantasme')
    else:
        form = FantasyForm()
    return render(request, 'front/pages/page_fantasme.html', {"form":form})

我已经安装了 maildev,这是我的配置:

# Email
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

当我提交表单时,POST 请求会在终端上发送,但我什么也没有,没有邮件。

谢谢你,对不起我的英语我是法国人。

4

0 回答 0