无法在Python / Django中发送电子邮件

时间:2016-10-31 23:51:29

标签: python django

无法弄清楚如何在views.py中的forms.py中调用send_email 任何人都可以帮助我。这是一个范围问题

forms.py

from django import forms
from django.core.mail import send_mail


class ContactForm(forms.Form):
    subject = forms.CharField(max_length=75)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()

    def send_email(self):
        send_mail(subject, message, sender, 'TheAndrewFranklin@gmail.com', fail_silently=False)
        print('sent')

和这里的views.py

views.py

from django.shortcuts import render
from django.views.generic.edit import FormView
from .forms import ContactForm

...

class ContactView(FormView):
template_name = "main/contact.html"
form_class = ContactForm
success_url = '/thanks/'

def form_valid(self, form):
    ContactForm.send_email(form)
    return super(ContactView, self).form_valid(form)

1 个答案:

答案 0 :(得分:1)

对于初学者,您只需调用ContactForm.send_email,这只有在这是一种类方法时才有效(如果您对类方法感兴趣,请参阅here)。您需要在您创建的实例send_email上调用form_class

class ContactView(FormView):
    template_name = "main/contact.html"
    form_class = ContactForm
    success_url = '/thanks/'

    def form_valid(self, form):
        form_class.send_email(form)
        return super(ContactView, self).form_valid(form)

除此之外,我建议验证是否正确配置了电子邮件服务器和设置。因此,请确保您能够从简单的python脚本发送电子邮件。