我有一个简单的Django联系表单(用户电子邮件,消息)。我已经配置了一个Gmail服务器并且它正在运行,但它总是用this answer指出的settings.py中列出的地址重写了地址。所以我使用Yahoo Mail服务器配置了我的设置。
这是我的 settings.py 文件
EMAIL_HOST = 'smtp.mail.yahoo.com'
EMAIL_HOST_USER = 'myid@yahoo.com'
EMAIL_HOST_PASSWORD = 'mypass'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
这是我的 views.py
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
send_mail(
'Contact Us',
cd['message'],
cd.get('email', ''),
['myid@yahoo.com'],
)
return HttpResponseRedirect('thanks')
else:
form = ContactForm()
return render(request, 'hunt/contact.html', {'form': form})
现在我收到SMTPSenderRefused
例外。
例外值 - (553, 'From address not verified - see http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html', 'someone@gmail.com')
编辑 - 我尝试将自己的ID myid@yahoo.com
放入电子邮件字段中,然后才有效。它似乎只适用于我的电子邮件ID。
答案 0 :(得分:3)
几乎所有公共邮件服务器都只允许在From
标题中包含具有实际作者电子邮件的电子邮件。您正尝试使用" From:some_user@email.com"发送电子邮件,该邮件被拒绝。真的,这很像你在谷歌的问题,但是雅虎会丢失一个错误,而不是默默地搞乱标题。
我已将用户的电子邮件放入邮件正文中,并可能尝试将其放入“回复”中。 header manually
P.S。对每个可能的函数使用命名关键字参数通常更好(在您的情况下 - send_mail
)。它通常有助于避免愚蠢的论点订单错误。