【发布时间】:2011-08-21 22:11:57
【问题描述】:
我的项目中有几个实例,我尝试在 Django 视图中发送电子邮件。
我希望能够在视图中对电子邮件发件人进行硬编码。但是,当我尝试这样做时,它会继续从我的设置文件中指定的默认帐户发送电子邮件。
这是一个例子:
if testform.is_valid():
beta=testform.save()
subject="Hi Beta Tester"
sender="correct@email.com"
recipient=[testform.cleaned_data['email']]
text=loader.get_template('registration/beta_email.txt')
html=loader.get_template('registration/beta_email.html')
site_name='mysite'
d=Context({'site_name':site_name})
text_content=text.render(d)
html_content=html.render(d)
#This sends two mail versions, plain text and html
msg=EmailMultiAlternatives(subject, text_content, sender, recipient)
msg.attach_alternative(html_content, "text/html")
msg.send()
return HttpResponseRedirect('/splash/')
我认为我可以在此处显式发送指定发件人参数。然而,当我测试它时,电子邮件是从我的设置文件中列出的地址发送的,配置如下:
EMAIL_USE_TLS=True
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='wrong@email.com'
EMAIL_HOST_PASSWORD='private'
DEFAULT_FROM_EMAIL='wrong@email.com'
我是否只需要删除 DEFAULT_FROM_EMAIL 常量才能使其工作?我试过这样做,它似乎正在工作,但我很困惑。在 Django 文档中,它建议在视图中设置发件人应该覆盖默认值。
【问题讨论】:
-
看来应该可以了。什么版本的 Django?查看主干版本的来源:code.djangoproject.com/browser/django/trunk/django/core/mail/…。当您将
sender传递给EmailMultiAlternatives时,您确定它不是None 吗?我会在交互式 shell 和 pdb 中解决这个问题。 -
嗨,Brian,我使用的是 v1.2。如果您查看下面的评论,我认为我的问题正在变得清晰
-
你确定不是smtp服务器重写了发件人地址吗?即:gmail 做一些垃圾邮件保护。
-
嗨,John,我是 smtp 服务器的新手,所以我不知道如何调试它。这是纯粹的开发环境,所以我的邮件没有被标记为垃圾邮件。不确定这是否重要
-
我知道 addThis(社交媒体共享网络服务)能够从任何 gmail 帐户向任何其他 gmail 帐户发送电子邮件