12

django-registrationを使用しているim、すべて問題ありません。確認メールはプレーンテキストで送信されていましたが、imが修正され、htmlで送信されていることを知っていますが、ごみの問題があります...htmlコードは次のように表示されます。

<a href="http://www.example.com/accounts/activate/46656b86eefc490baf4170134429d83068642139/">http://www. example.com/accounts/activate/46656b86eefc490baf4170134429d83068642139/</a>

そして私は...のようなhtmlコードを表示する必要はありません

何か案が?

ありがとう

4

4 に答える 4

27

django-registration へのパッチ適用を回避するには、RegistrationProfile モデルをproxy=Trueで拡張する必要があります。

models.py

class HtmlRegistrationProfile(RegistrationProfile):
    class Meta:
        proxy = True
    def send_activation_email(self, site):
        """Send the activation mail"""
        from django.core.mail import EmailMultiAlternatives
        from django.template.loader import render_to_string

        ctx_dict = {'activation_key': self.activation_key,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                    'site': site}
        subject = render_to_string('registration/activation_email_subject.txt',
                                   ctx_dict)
        # Email subject *must not* contain newlines
        subject = ''.join(subject.splitlines())

        message_text = render_to_string('registration/activation_email.txt', ctx_dict)
        message_html = render_to_string('registration/activation_email.html', ctx_dict)

        msg = EmailMultiAlternatives(subject, message_text, settings.DEFAULT_FROM_EMAIL, [self.user.email])
        msg.attach_alternative(message_html, "text/html")
        msg.send()

また、登録バックエンドでは、 RegistrationProfileの代わりにHtmlRegistrationProfileを使用してください。

于 2011-02-26T18:32:00.003 に答える
15

テキストバージョンとHTMLバージョンの両方を送信することをお勧めします。djangoのmodels.pyを見てください-登録:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email])

代わりに、ドキュメントhttp://docs.djangoproject.com/en/dev/topics/email/#sending-alternative-content-typesのようなことをしてください。

from django.core.mail import EmailMultiAlternatives

subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
于 2009-09-12T05:52:05.510 に答える
0

この男は、defaultBackend を拡張して、アクティベーション メールの HTML バージョンを追加できるようにしました。

具体的には、代替バージョンのジョブはここで行われます

バックエンド部分をうまく使いこなせた

于 2012-11-22T14:48:39.690 に答える