Comment envoyer un email avec style dans Python3?
Je suis de l'envoi de courriels à partir d'un Python3 script (à l'aide de smtplib
). Maintenant, je suis toujours recevoir les messages dans les comptes Gmail. Mais le problème est que je ne suis pas en mesure de montrer des styles CSS, en dépit d'être dans la ligne. D'ailleurs, même ce simple message ne peut être envoyé:
title = 'My title'
msg_content = '<h2>{title}: <font color="green">OK</font></h2>\n'.format(title=title)
Cependant, si j'ai supprimer les deux points juste après {titre}, il fonctionne. Et si j'ai enlever le \n à la fin, il ne fonctionnera pas nouveau. Pourquoi? Comment puis-je envoyer une ligne comme ceci dans Python3?
title = 'My title'
msg_content = '<h2>{title}: <span style="color: green">OK</span></h2>'.format(title=title)
MODIFIER
import smtplib
msg_header = 'From: Sender Name <sender@server>\n' \
'To: Receiver Name <receiver@server>\n' \
'Cc: Receiver2 Name <receiver2@server>\n' \
'MIME-Version: 1.0\n' \
'Content-type: text/html\n' \
'Subject: Any subject\n'
title = 'My title'
msg_content = '<h2>{title} > <font color="green">OK</font></h2>\n'.format(
title=title)
msg_full = (''.join([msg_header, msg_content])).encode()
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login('[email protected]', 'senderpassword')
server.sendmail('[email protected]',
['[email protected]', '[email protected]'],
msg_full)
server.quit()
OriginalL'auteur forvas | 2014-06-06
Vous devez vous connecter pour publier un commentaire.
Modifier après la clarification
La msg_full résultat de votre exemple ressemble à ceci:
Votre adresse E-Mail format n'est pas conforme à RFC 2822:
''.join([msg_header, msg_body])
, ce n'est pas d'insérer cette ligne. Ce que vous voulez être transmises dans le corps du texte est donc traitée comme un en-tête.Une version correcte de la même e-mail devrait ressembler à ceci:
Je vous encourage fortement à utiliser Python intégré dans des bibliothèques pour la construction de la RFC conforme charges.
En outre, il est bon formulaire pour ajouter un text/plain version de votre message, de sorte que tout destinataire puisse le lire n'importe où (j'ai un mail en HTML désactivé et ne pas voir tout ça sur mon client). Vous pouvez le faire facilement avec le courrier électronique.le mime.texte:
Réponse Précédente
Votre question manque le code que vous utilisez pour envoyer l'e-mail. Je suis fortement soupçonner que vous passer msg_content directement le message à SMTP.sendmail.
SMTP.sendmail, cependant, à travers cette chaîne, c'est à dire que la charge utile du courrier selon les RFC 5321. Cette charge utile de données se compose de e-mail les en-têtes et le contenu, avec les en-têtes en haut du message (voir RFC 2822).
Votre message "Mon titre: Mon titre:" et ne pas être présentées à la fin de réception. Si vous supprimez le côlon après
{title}:
, le récepteur ne peut évidemment pas traiter le résultat sous la forme d'un en-tête, etc.HTML de style mail, regardez les exemples à https://docs.python.org/2/library/email-examples.html - fondamentalement, vous devez créer un bon texte/html au format MIME message pour envoyer votre message.
En passant, merci beaucoup! Super réponse!
Je viens de tomber sur votre réponse à l'issue de la recherche bien que beaucoup d'autres exemples, très bien détaillé! merci!!!! Juste une chose à ajouter. N'oubliez pas votre
try
/except
dans ce domaine!OriginalL'auteur nd.