J'utilise django.core.mail.EmailMultiAlternatives lors de l'envoi d'e-mails à partir de mon application django dans le but de m'assurer que le message est déclassé en texte si le Le client de messagerie ne supporte pas HTML.Django EmailMultiAlternatives et l'affichage du courrier HTML dans Outlook 2003 sur Win2003
Voici ma méthode send_email:
def send_email(self, from_address, to_list, subject, msg_text, msg_html):
subject=subject.replace('\r','').replace('\n',' ')
self.msg = EmailMultiAlternatives(subject, msg_text, from_address, to_list)
self.msg.attach_alternative(msg_html, "text/html")
self.msg.content_subtype = "html"
self.msg.send()
Il fonctionne très bien avec Gmail, Hotmail et bien d'autres clients de messagerie électronique - affichant le contenu HTML sans problème. Mais il ne sera pas afficher le contenu HTML dans Outlook 2003 en cours d'exécution sur Win2003 - juste la version texte.
Si je mets avec force le code HTML dans le EmailMultiAlternatives appel, à savoir l'utilisation msg _html instead of msg
_TEXT comme ceci:
self.msg = EmailMultiAlternatives(subject, msg_html, from_address, to_list)
il fonctionne correctement dans tous les clients; mais cela signifie qu'il n'y a pas de retour de texte pour les clients qui ne supportent pas HTML ou (plus probablement) qui ont désactivé le support pour cela.
Je pense qu'il est utile de mentionner que l'e-mail est généré sur une application django fonctionnant sous Mac OS X (juste au cas où il s'agirait de différences de terminaison de ligne entre les systèmes d'exploitation).
Je vois que people using other languages ont eu des problèmes similaires avec perspectives ...
Je me demande si quelqu'un a une idée de perspectives Pourquoi se comporter différemment et s'il est simple correctif qui peut être appliqué dans mon code?
Je n'ai pas d'Outlook à tester non plus, mais +1 pour l'effort! –
Votre premier instinct - que je ne devrais pas jouer avec content_subtype - était correct. Supprimer cela de ma fonction rend correctement le HTML dans Outlook 2003 et les autres clients de messagerie. Je pense que la documentation de Django sur l'envoi de courriels pourrait bénéficier soit de la suppression de la mention à content_subtype, soit de la façon de l'utiliser. J'ai supposé que depuis Outlook pourrait gérer un type de contenu alternatif; Je devrais utiliser le content_subtype = 'html'. Évidemment, ce n'est pas le cas et cela est contraire à ce que j'essayais d'accomplir. Merci beaucoup pour le contrôle de santé mentale. – cethegeek
N'utilisez pas 'content_subtype =" iso-8859-1 "'! Il va juste mettre le type mime à 'text/iso-8859-1' qui est évidemment un non-sens, et alors votre message sera vide avec une pièce jointe appelée' noname' contenant le message réel. – Timmmm