电子邮件未通过Django联系人表单发送

我在用Django构建的网站上创建了一个联系表单,但是从该表单发送的电子邮件似乎并未实际发送。这是forms.py中的表单代码:


class ContactForm(forms.Form):
    email = forms.EmailField(required=True)
    subject = forms.CharField(required=True)
    message = forms.CharField(widget=forms.Textarea,required=True)

这是我views.py中的代码:

def contact(request,success=""):
    submitted = False
    template_name = "main/contact.html"
    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            from_email = form.cleaned_data['email']
            message = form.cleaned_data['message']
            try:
                send_mail(subject,message,from_email,['MYEMAILHERE'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect("success/")
    if success != "":
        submitted = True

    context = {"form": form,"submitted": submitted}
    return render(request,template_name,context)

最后是html代码的形式:

{% load crispy_forms_tags %}
<h1>Contact Us</h1>
<form method="post">
    {% csrf_token %}
    {{ form|crispy }}
    <div class="form-actions">
      <button type="submit" class="btn btn-primary mb-2">Send</button>
    </div>
</form>

如果需要其他任何代码来帮助调试,请告诉我,我将包括在内。谢谢。

zklovelhz 回答:电子邮件未通过Django联系人表单发送

将此邮件配置放入您的settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER ='your mail id'
EMAIL_HOST_PASSWORD = 'your password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

将其导入您的views.py

from django.core.mail import send_mail
from django.conf import settings

将此添加到views.py

send_mail(subject,message,from_email/settings.EMAIL_HOST_USER,['your mail/to mail'],fail_silently=False)

注意:如果应用是Gmail帐户,请确保该应用的安全性较低 less secure app

本文链接:https://www.f2er.com/3017475.html

大家都在问