【发布时间】:2012-05-27 15:58:51
【问题描述】:
如何在 Pinax 中设置电子邮件确认?,我需要设置 SMTP 服务器或类似的东西吗?,我试图找到相关文档但失败了。任何人都可以将我重定向到解释此问题的文档或任何相关文章吗? Pinax 使用电子邮件确认应用程序。我浏览了emailconfirmation的代码,但它不包含任何关于主机或服务器的设置。
【问题讨论】:
标签: django pinax email-confirmation
如何在 Pinax 中设置电子邮件确认?,我需要设置 SMTP 服务器或类似的东西吗?,我试图找到相关文档但失败了。任何人都可以将我重定向到解释此问题的文档或任何相关文章吗? Pinax 使用电子邮件确认应用程序。我浏览了emailconfirmation的代码,但它不包含任何关于主机或服务器的设置。
【问题讨论】:
标签: django pinax email-confirmation
emailconfirmation 的集成非常简单。如果您有可用于发送邮件的现有邮件服务器,则无需设置任何邮件服务器。您只需在标准 Django 设置中填写用于发送邮件的数据,emailconfirmation 将使用该数据:
# e-mail settings
# XXXXXXXXXXXXXXXXXXXXXXX THESE ARE NOT YET PRODUCTIONREADY!
EMAIL_HOST='mail.your_mailserver.com'
EMAIL_PORT=1025
EMAIL_HOST_USER='your_username'
EMAIL_HOST_PASSWORD='your_password'
总结接下来要做什么:您必须创建一个用于输入电子邮件地址的表单(电子邮件配置不附带这种表单的原因有些晦涩)。这可能看起来像这样:
# email form using emailconfirmation
class AddEmailForm(forms.Form):
def __init__(self, *args, **kwargs):
try:
self.user = kwargs.pop('user')
except KeyError:
pass
super(AddEmailForm, self).__init__(*args, **kwargs)
email = forms.EmailField(label="Email",required=True, widget=forms.TextInput())
def clean_email(self):
try:
EmailAddress.objects.get(user=self.user, email=self.cleaned_data["email"])
except EmailAddress.DoesNotExist:
try:
User.objects.get(email = self.cleaned_data['email'])
except User.DoesNotExist:
return self.cleaned_data["email"]
raise forms.ValidationError(u"email address associated with another account.")
def save(self):
try:
self.user.message_set.create(message="Confirmation email sent to %s" % self.cleaned_data["email"])
except AttributeError:
pass
return EmailAddress.objects.add_email(self.user, self.cleaned_data["email"])
这将允许用户输入一个电子邮件地址,检查该电子邮件地址是否已经存在并且正在被另一个帐户使用。之后,它会将电子邮件地址添加到未确认的电子邮件地址中,并向用户发送一封带有链接的电子邮件。然后,用户可以通过单击链接来确认电子邮件地址。
仅此而已。让我们希望 Pinax 的人能尽快对他们的文档进行质量攻势;)
【讨论】: