使用 Django EmailMessage,为什么标题键和值有时显示有时不显示?

时间:2021-05-07 09:09:56

标签: python django email

我正在使用来自 django.core.mail电子邮件消息。我正在尝试在要发送的消息中包含标题。但在某些情况下,第一个标题行不会出现在我的消息中。为什么?

问题示例

在以下情况下,我有一个问题:

views.py

from django.shortcuts import render, redirect
from django.core.mail import send_mail, EmailMessage
from django.contrib import messages
from django import forms

from . forms import ContactMessageForm


def contact_form(request):
    form = ContactMessageForm(request.POST or None)
    context = {'form':form}
    if request.method == 'POST':
        if form.is_valid():
            contact_form = form.save()
            contact_form = ContactMessageForm()

            first_name = form.cleaned_data["first_name"]
            last_name = form.cleaned_data["last_name"]
            email = form.cleaned_data["email"]
            order_number = form.cleaned_data["order_number"]
            subject = form.cleaned_data["subject"]
            cc = form.cleaned_data["cc"]
            message = form.cleaned_data["message"]

            full_name = first_name + " " + last_name

            objet = ""
            if order_number == None:
                objet = subject
            else:
                objet = subject + ' / ' + order_number

            email_msg = EmailMessage(
            '[TITLE] : ' + objet,
            message,
            'foo@foo.fr',
            ['foo@foo.fr'],
            reply_to = [email],
            headers = {
                "Exp ": 'header 1 value',
                "Prenom et Nom ": full_name,
                "Objet du message ": str(subject),
                "Testing header 4 key": 'header 4 value',
            },
            )
            email_msg.send()


            if cc == True:
                msg = '''
                    Bonjour,
                    Nous avons bien reçu votre email. Nous vous répondrons dans les plus brefs délais.
                    Voici le message que vous nous avez envoyé. \n \n
                '''
                
                msg = msg + message

                send_mail(
                '[TITLE] : ' + subject + ' / ' + order_number,
                msg,
                'foo@foo.fr',
                [email],
                fail_silently=False,
                )

            messages.success(request, 'Email envoyé')
            return redirect('store:home')

        else:
            return render(request, 'contact/contact-form.html', context) 
    else:
        return render(request, 'contact/contact-form.html', context) 

标题的第一行不显示。 “Exp”,它是键,“header 1 value”,它是值没有出现......标题的其余部分显示正确。

没有问题的示例

在以下情况下,一切正常。

views.py

from django.shortcuts import render, redirect
from django.core.mail import send_mail, EmailMessage
from django.contrib import messages
from django import forms

from . forms import ContactMessageForm


def contact_form(request):
    form = ContactMessageForm(request.POST or None)
    context = {'form':form}
    if request.method == 'POST':
        if form.is_valid():
            contact_form = form.save()
            contact_form = ContactMessageForm()

            first_name = form.cleaned_data["first_name"]
            last_name = form.cleaned_data["last_name"]
            email = form.cleaned_data["email"]
            order_number = form.cleaned_data["order_number"]
            subject = form.cleaned_data["subject"]
            cc = form.cleaned_data["cc"]
            message = form.cleaned_data["message"]

            full_name = first_name + " " + last_name

            objet = ""
            if order_number == None:
                objet = subject
            else:
                objet = subject + ' / ' + order_number

            email_msg = EmailMessage(
            '[TITLE] : ' + objet,
            message,
            'foo@foo.fr',
            ['foo@foo.fr'],
            reply_to = [email],
            headers = {
                "header 1 key ": 'header 1 value',
                "Prenom et Nom ": full_name,
                "Objet du message ": str(subject),
                "header 4 key": 'header 4 value',
            },
            )
            email_msg.send()


            if cc == True:
                msg = '''
                    Bonjour,
                    Nous avons bien reçu votre email. Nous vous répondrons dans les plus brefs délais.
                    Voici le message que vous nous avez envoyé. \n \n
                '''
                
                msg = msg + message

                send_mail(
                '[TITLE] : ' + subject + ' / ' + order_number,
                msg,
                'foo@foo.fr',
                [email],
                fail_silently=False,
                )

            messages.success(request, 'Email envoyé')
            return redirect('store:home')

        else:
            return render(request, 'contact/contact-form.html', context) 
    else:
        return render(request, 'contact/contact-form.html', context) 

header 1 keyheader 1 value 确实出现在消息中,作为标题的其他键和值。

有关信息,出于隐私问题,我已将我的电子邮件地址替换为 foo@foo.fr。但我确认我已通过我的实际电子邮件地址收到邮件。

0 个答案:

没有答案
相关问题