如何在Django / Pinax中设置电子邮件验证/确认?

时间:2012-05-27 15:58:51

标签: django pinax email-confirmation

如何在Pinax中设置电子邮件确认?,我是否需要设置SMTP服务器或类似的东西?我试图找到有关该文件的文档但失败了。任何人都可以将我重定向到文档或任何相关文章解释这个吗?,Pinax使用emailconfirmation应用程序。我浏览了email确认的代码,但它没有包含有关主机或服务器的任何设置。

1 个答案:

答案 0 :(得分:2)

电子邮件确认的集成非常简单。如果您有可用于发送邮件的现有邮件服务器,则无需设置任何邮件服务器。您只需在标准Django设置中填写用于发送邮件的数据,并且email确认将使用:

# 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的家伙很快会对他们的文档做出高质量的攻击;)