【发布时间】:2019-04-24 15:27:22
【问题描述】:
用户在我的页面上提交表单后,我需要发送一封电子邮件(这仍在开发中,但很快就会投入生产)。
我已阅读此other answer,但在我提交表单后,我没有收到任何电子邮件(我已将我的个人电子邮件用作发件人和收件人,用于测试)。
我需要修改什么?
PLUS: 如何通过电子邮件发送图像?有这方面的教程吗?提交表单后我需要发送专业的电子邮件。
settings.py
EMAIL_HOST = 'smtp.gmail.com' # since you are using a gmail account
EMAIL_PORT = 587 # Gmail SMTP port for TLS
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'oma.oma@gmail.com' #Not my actual email
EMAIL_HOST_PASSWORD = 'MyPassword' #Not my actual password
views.py:
# here we are going to use CreateView to save the Third step ModelForm
class StepThreeView(CreateView):
form_class = StepThreeForm
template_name = 'main_app/step-three.html'
success_url = '/'
def form_valid(self, form):
form.instance.tamanios = self.request.session.get('tamanios') # get tamanios from session
form.instance.cantidades = self.request.session.get('cantidades') # get cantidades from session
del self.request.session['cantidades'] # delete cantidades value from session
del self.request.session['tamanios'] # delete tamanios value from session
self.request.session.modified = True
return super(StepThreeView, self).form_valid(form)
form.py:
from django.core.mail import send_mail
class StepThreeForm(forms.ModelForm):
instrucciones = forms.CharField(widget=forms.Textarea)
class Meta:
model = TamaniosCantidades
fields = ('imagenes', 'instrucciones')
def __init__(self, *args, **kwargs):
super(StepThreeForm, self).__init__(*args, **kwargs)
self.fields['instrucciones'].required = False
def send_email(self):
send_mail('Django Test', 'My message', 'oma.oma@gmail.com',
['oma.oma@gmail.com'], fail_silently=False)
【问题讨论】:
-
看来您没有在任何地方调用表单的 send_email 方法...
-
@ivissani 我该怎么做?
标签: django