Django 3. Отправить письмо с вложенным файлом - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть простая контактная форма в моем проекте Django 3. Он работает нормально, и у меня есть masseges, но как я могу сделать функцию для файла вложения к моей почте? У меня есть FileField и некоторый код в views.py, но он не работает. Любые идеи? Версии: Python 3.6.5. Django 3.0.5.

forms.py

class ContactForm(forms.Form):
    name = forms.CharField(required=False, max_length=150, help_text="Name")
    email = forms.CharField(required=False, max_length=150, help_text="Email")
    file = forms.FileField(widget=forms.FileInput, required=False)
    message = forms.CharField(widget=forms.Textarea, help_text="Text area")

views.py

@csrf_exempt
def contact_us(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            sender_name = form.cleaned_data['name']
            sender_email = form.cleaned_data['email']
            sender_file = form.cleaned_data['file']
            message = "{0} New massege:\n\n{1}\n\n{2}\n\n{3}".format(sender_name,
                                                                           sender_email,
                                                                           form.cleaned_data['message'],
                                                                           sender_file,)
            send_mail('Subject', message, sender_email, ['to.my.mail@gmail.com'])
            return render(request, 'pages/thank-you.html')
    else:
        form = ContactForm()

    return render(request, 'flatpages/report.html', {'form': form})

HTML.

<div class="col-12 col-md-6">
            <div class="report">
                <h3 class="report-title">Ваші дані</h3>
                <form method="post" action="/pro-upravlinnya/report/">
                    <div style="display:none">
                        <input type="hidden" name="csrfmiddlewaretoken" value="$csrf_token"/>
                    </div>
                    <div class="report-control">
                        {{ form.name.help_text }}
                        {{ form.name }}
                    </div>
                    <div class="report-control">
                        {{ form.email.help_text }}
                        {{ form.email }}
                    </div>
                    {{ form.file }}
                    <div class="report-control">
                        {{ form.message.help_text }}
                        {{ form.message }}
                    </div>
                    <div class="report-btn-wrp">
                        <button type="submit" class="report-submit" >Send</button>
                    </div>
                </form>
            </div>
        </div>

Вывод на мою электронную почту: тема, имя, электронная почта, текст, нет

...