سؤال

أنا باستخدام تسجيل Django، كل شيء على ما يرام، وكان البريد الإلكتروني للتأكيد كان يرسل في نص عادي، ولكن يعرف IM ثابتة وهو يرسل في HTML، ولكن لدي مشكلة القمامة ... رمز HTML يظهر:

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

وأنا لا أحتاج إلى إظهار كود HTML مثل ...

اي فكرة؟

شكرا

هل كانت مفيدة؟

المحلول

أود أن أوصي بإرسال كل من إصدار نصي وإصدار HTML. ابحث في النماذج

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()

نصائح أخرى

لتجنب الترقيع تسجيل Django، يجب عليك تمديد نموذج التسجيل وكيل = صحيح:

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()

وفي تسجيل الدخول الخاص بك، استخدم فقط htmlregistrationprofile. بدلا من تطبيق التسجيل.

أعلم أن هذا قديم وحزمة التسجيل لم تعد حافظا عليها. فقط في حالة ما زال شخص ما يريد هذا. الخطوات الإضافية WRT إلى إجابة BPPierre هي:
- Subclass The ResistanceView، أي وجهات نظر التطبيق الخاص بك

class MyRegistrationView(RegistrationView):
...
def register(self, request, **cleaned_data):
    ...
    new_user = HtmlRegistrationProfile.objects.create_inactive_user(username, email, password, site)

- في Urls.py الخاص بك تغيير العرض إلى طريقة العرض الفرعية المستحقة، IE - قائمة القائمة

url(r'accounts/register/$', MyRegistrationView.as_view(form_class=RegistrationForm), name='registration_register'),'

هذا الرجل قد مدد defaultbackend تمكيننا من إضافة إصدار HTML من البريد الإلكتروني للتنشيط.

على وجه التحديد، تتم مهمة الإصدار البديل هنا

تمكنت من استخدام الجزء الخلفي بنجاح

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top