2011-11-28 3 views
0

Je programme avec Python. J'ai déjà une fonction qui envoie un email avec un message et une pièce jointe .... Mon seul problème est que je veux que le message soit HTML, mais le mien ne respecte pas cela .....sendmail avec message HTML

Voici la fonction que j'utilise

def enviarCorreo(fromaddr, toaddr, text, file): 
    msg = MIMEMultipart('mixed') 
    msg['From'] = fromaddr 
    msg['To'] = toaddr 
    msg['Subject'] = 'asunto' 
    msg.attach(MIMEText(text)) 
    #adjunto 
    adjunto = MIMEBase('application', "octet-stream") 
    adjunto.set_payload(open(file, "rb").read()) 
    encode_base64(adjunto) 
    anexo = os.path.basename(file) 
    adjunto.add_header('Content-Disposition', 'attachment; filename= "%s"' % anexo) 
    msg.attach(adjunto) 
    #enviar 
    server = smtplib.SMTP('localhost') 
    server.set_debuglevel(1) 
    server.sendmail(fromaddr, toaddr, msg.as_string()) 
    server.quit() 
    return 

J'espère que vous pouvez me dire ce qu'il faut changer ou ajouter quoi donc le message que j'envoie pourrait être HTML ....

J'utilise le « MELANGE » multipart parce que le message HTML contiendra certaines images qui ne seraient pas attachées mais feraient partie du message .....

Répondre

5

remplacer

msg.attach(MIMEText(text)) 

par

msg.attach(MIMEText(text, 'html')) 

(par défaut est 'clair')

+0

MERCI HOMME !!! TRAVAILLÉ TRÈS BIEN !!! – mauguerra

+1

génial. Ne pas oublier de me récompenser ;-) – gecco

+0

Savez-vous si je mets dans le message HTML, avec le chemin apropiate, serait-il desplay dans le message ??? J'essaie de faire cela, mais il affiche seulement l'image X (image non trouvée) ... – mauguerra

2

Il est un exemple sur la page de documentation officielle qui envoie un courrier électronique HTML - http://docs.python.org/library/email-examples.html

+0

Merci, J'ai essayé avec cette page .... mon problème avec cela est qu'ils importent faisant ceci "de email.mine.multipart ----" que je ne sais pas pourquoi ne fonctionne pas pour moi ..... je dois le faire quelque chose comme ça "de email.MIMEMultipart importer MIMEMultipart" – mauguerra