서문 : 내 서버의 명령 줄 (send_mail()
사용)을 통해 전자 메일을 보낼 수 있습니다. 같은 SMTP 설정을 사용하여 localhost
에서 이메일을 보낼 수도 있습니다. 또한 사용자 등록을 위해 django-allauth을 사용하고 있으며 이메일 확인 이메일을 보낼 수 있습니다.Django 문의 양식을 통해 전자 메일을 보낼 수 없습니다.
문제점 : 내 서버에서 내 연락처 양식으로 메일을 보내지 않았으므로 오류가 발생하지 않습니다. 사실 send_mail()
은 1
(즉, 성공)을 반환하며보기가 리디렉션 중입니다.
class ContactFormView(FormView):
form_class = ContactForm
template_name = 'contact.html'
success_url = '/message-sent/'
def form_valid(self, form):
subject = form.cleaned_data.get('subject')
message = "{name}/{email} sent you the following message: ".format(
name=form.cleaned_data.get('name'),
email=form.cleaned_data.get('email')
)
message += "\n\n{0}".format(form.cleaned_data.get('message'))
sender = form.cleaned_data.get('email')
recipients = ['[email protected]', '[email protected]']
honeypot = form.cleaned_data.get('phone_number')
if not honeypot:
send_mail(subject, message, sender, recipients)
return HttpResponseRedirect(self.get_success_url())
그리고 내 관련 forms.py을 : 슈퍼 명백한
class ContactForm(forms.Form):
phone_number = forms.CharField(required=False, label='Phone Number (keep this empty, or the form won\'t submit)') # honeypot
name = forms.CharField(required=True)
email = forms.EmailField(required=True)
subject = forms.CharField(required=True)
message = forms.CharField(widget=forms.Textarea)
내가 실종 뭔가
내 views.py은 다음과 같습니다?
EDIT : 자격 증명이 확실히 작동합니다 (언급 한대로 내 지역 개발 환경에서 작동하며 동일한 자격 증명을 사용하여 서버의 셸에서 전자 메일을 보낼 수도 있음). fail_silently=False
을 설정해도 예외는 발생하지 않습니다.
EDIT_2 : 나는 다음과 같이 할 수있는보기 수정 :
def form_valid(self, form):
send_mail('Test Subject', 'Test Message', '[email protected]', ['[email protected]'])
return HttpResponseRedirect(self.get_success_url())
를 그리고 잘 이메일을 받았다. 보시다시피 위의보기에서 양식 데이터가 send_mail()
으로 전달되지 않았습니다.
혹시 smtp 연결 유형에서'dummy'를 사용하고 계십니까? – karthikr
아니요! 기본 'EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'' 사용하기 – rnevius
smtp 자격 증명을 사용하여 이메일을 성공적으로 보낼 수 있었습니까? 또한 send_mail에 fail_silently 옵션이 있습니다 - https://docs.djangoproject.com/en/dev/topics/email/#send-mail - 예외가 있습니까? – karthikr