一位客户要求我在重置密码时,他的 satchmo 商店应该发送一封 html 格式的邮件。
显然,satchmo 或 django 的 contrib.auth.views.password_reset 只发送原始电子邮件。
如何修改它以便能够发送 html 格式的邮件?
谢谢!
我没有使用过 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
您可以使用现有的PasswordResetForm
作为指导。您需要send_mail
用代码替换最后的调用以发送 html 电子邮件。有关发送 html 电子邮件的文档应该会有所帮助。
编写表单后,您需要将表单包含在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'),
...