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

如何在Django/Pinax中设置电子邮件验证/确认?,django,pinax,email-confirmation,Django,Pinax,Email Confirmation,如何在Pinax中设置电子邮件确认?我是否需要设置SMTP服务器或类似的东西?我尝试查找有关此的文档,但失败。有人能把我引向文档或任何相关文章来解释这一点吗?Pinax使用emailconfirmation应用程序。我浏览了emailconfirmation的代码,但它不包括任何关于主机或服务器的设置。emailconfirmation的集成非常简单。如果您有可以用来发送邮件的现有邮件服务器,则不必设置任何邮件服务器。您只需在标准Django设置中填写用于发送邮件的数据,emailconfirm

如何在Pinax中设置电子邮件确认?我是否需要设置SMTP服务器或类似的东西?我尝试查找有关此的文档,但失败。有人能把我引向文档或任何相关文章来解释这一点吗?Pinax使用emailconfirmation应用程序。我浏览了emailconfirmation的代码,但它不包括任何关于主机或服务器的设置。

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'
总结一下接下来要做什么:您必须创建一个表单来输入电子邮件地址(这种表单没有随emailconfiguration一起提供的原因有些模糊)。这可能看起来像这样:

# 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"])
这将允许用户输入电子邮件地址,检查电子邮件地址allready是否存在,是否正被其他帐户使用。之后,它会将emailaddress添加到未确认的emailaddress中,并发送一封带有用户链接的电子邮件。然后,用户可以通过单击链接确认电子邮件地址

就这些。让我们希望Pinax的家伙们很快就会对他们的文档发起质量攻势;)