satchmo password_reset html格式邮件

mau*_*ado 1 django satchmo

我已经被客户要求他的satchmo商店在重置密码时应该发送一个html格式的邮件.

很明显,satchmo或django的contrib.auth.views.password_reset只发送原始电子邮件.

如何修改这个以便能够发送html格式的邮件?

谢谢!

Ala*_*air 5

我没有使用Satchmo,但这应该让你开始.

首先,子类化PasswordResetForm,并覆盖save方法以发送html电子邮件而不是纯文本电子邮件.

from django.contrib.auth.forms import PasswordResetForm

class HTMLPasswordResetForm(PasswordResetForm):
    def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
             use_https=False, token_generator=default_token_generator, from_email=None, request=None):
        """
        Generates a one-use only link for resetting password and sends to the user
        """
        # Left as an exercise to the reader
Run Code Online (Sandbox Code Playgroud)

您可以使用现有PasswordResetForm的指南.您需要send_mail在最后用代码替换呼叫以发送HTML电子邮件.有关发送HTML电子邮件的文档应该有所帮助.

编写完表单后,需要将表单包含在url模式中password_reset.正如我所说,我没有任何Satchmo的经验,但是看看源代码,我想你想satchmo_store.accounts.urls通过更改password_reset_dict 来更新.

# You need to import your form, or define it in this module
from myapp.forms import HTMLPasswordResetForm

#Dictionary for authentication views
password_reset_dict = {
    'template_name': 'registration/password_reset_form.html',
    # You might want the change the email template to .html
    'email_template_name': 'registration/password_reset.txt',
    'password_reset_form': HTMLPasswordResetForm,
}

# the "from email" in password reset is problematic... it is hard coded as None
urlpatterns += patterns('django.contrib.auth.views',
    (r'^password_reset/$', 'password_reset', password_reset_dict, 'auth_password_reset'),
    ...
Run Code Online (Sandbox Code Playgroud)