enviar correo con python

omar alberto omar_alberto_h en yahoo.es
Mie Feb 28 01:33:18 CET 2007


Hola Alatar ,

yo tambien soy novato en esto de python y bueno si me regalaras un sencillo  ejemplo de como llamar la funcion  def mandar_mail con sus rerspectivos parametros te lo agradeceria
 
----- Mensaje original ----
De: Alatar <kh_alatar en telefonica.net>
Para: La lista de python en castellano <python-es en aditel.org>
Enviado: martes, 27 de febrero, 2007 18:08:36
Asunto: Re: [Python-es] enviar correo con python

Hola Roylan.

Recientemente he terminado yo un programa para poder mantener un 
newslist, te mando mi código que, de momento me funciona perfectamente.

He de decirte que soy novato en Python, pero que voy pillando carrerilla XD
(Digo esto porque si algún experto puede hacerme alguna sugerencia 
respecto al código, ésta será bienvenida)

#_________________
def mandar_mail(
    pm_servidor_correo,
    pm_login_usuario,
    pm_login_password,
    pm_emisor_nombre,
    pm_emisor_correo,
    pm_receptor_nombre,
    pm_receptor_correo,
    pm_asunto,
    pm_archivo_texto,
    pm_archivo_html,
    pm_adjuntos = [],
    pm_acuse_recibo = False,
    pm_imagenes_embebidas = []):
    """
    Rutina para mandar correo electrónico, permitiendo mandar el
    mensaje alternativamente en modo texto y html, así como
    con archivos adjuntos, imágenes embebidas y pudiendo solicitar
    confirmación de lectura.
    """
    assert type(pm_adjuntos) == list
    assert type(pm_imagenes_embebidas) == list
   
    #Inicializamos el mensaje a mandar y vamos añadiendo partes
    msgRaiz = MIMEMultipart('related')
   
    msgRaiz['From'] = pm_emisor_nombre + ' <' + pm_emisor_correo +'>'
    msgRaiz['To'] = pm_receptor_correo
    msgRaiz['Subject'] = pm_asunto
    msgRaiz['Date'] = formatdate(localtime = True)
    msgRaiz.preamble = '' #De momento, no lo uso
    msgRaiz.epilogue = '' #De momento, no lo uso
   
    if pm_acuse_recibo:
        msgRaiz['Disposition-Notification-To'] = pm_emisor_correo
   
    #Se encapsulan las versiones de texto plano y html del cuerpo
    #del mensaje en una parte 'alternative' para que el cliente de
    #correo decida qué parte mostrar
    msgAlternativo = MIMEMultipart('alternative')
    msgRaiz.attach(msgAlternativo)
   
    #Abrimos mensaje de texto alternativo y lo añadimos
    msgTexto = MIMEText(pm_archivo_texto, 'plain', pm_encoding_cuerpo)
    msgAlternativo.attach(msgTexto)
   
    #Abrimos mensaje html alternativo y lo añadimos
    msgHtml = MIMEText(pm_archivo_html, 'html', pm_encoding_cuerpo)
    msgAlternativo.attach(msgHtml)
   
    #Añadimos las imágenes embebidas
    for imagen in pm_imagenes_embebidas:
        #Cargar imagen
        archivo_imagen = open(imagen, 'rb')
        msgImage = MIMEImage(archivo_imagen.read())
        archivo_imagen.close()
        #Hemos de adjuntar la imagen en el content-id.
        #En el archivo html se debe hacer referencia al content-id
        #como fuente en el source de la imagen, por ejemplo:
        #<img src="cid:/nombre/de_la_ruta_entera/imagen.jpg">
        msgImage.add_header('Content-ID', '<' + imagen + '>')
        msgRaiz.attach(msgImage)
       
    #Añadimos los ficheros adjuntos a mandar
    for file in pm_adjuntos:
        adjunto = MIMEBase('application', "octet-stream")
        adjunto.set_payload(open(file, "rb").read())
        Encoders.encode_base64(adjunto)
        adjunto.add_header('Content-Disposition', 'attachment; filename 
= "%s"' % os.path.basename(file))
        msgRaiz.attach(adjunto)   
   
    #Conectamos con el servidor de correo y mandamos el mensaje
    servidor = smtplib.SMTP(pm_servidor_correo)
    #servidor.set_debuglevel(1)   
    servidor.ehlo()
    servidor.login(pm_login_usuario, pm_login_password)
    try:
        servidor.sendmail(pm_emisor_correo, pm_receptor_correo, 
msgRaiz.as_string())
        servidor.quit()
        resultado = k_ok
    except:
        resultado = k_error           
       
    return resultado   

--------------------------------------------------------------------------

Espero que te sea de ayuda,

    Alatar  ;)


-------------------------------------------------------------------------------------
Roylan Suarez Reyes escribió:
> hola colegas
>
>  Estoy intentando desarrollar en mi aplicacion un modulo para enviar un
> correo, pero resulta que cuando el correo llega el destinatario llega sin
> asunto, sin fecha, y estas cabeceras son importantes, aqui como lo hice:
>
> from smtplib import SMTP
> import config
>
> def EnviarCorreo():
>     "Funcion que envia un correo electronico"
>     servidor = SMTP(config.HOSTNAME)
>     remitente= config.HOSTNAME
>     destinatario= config.EMAIL_ADMIN
>     mensaje = 'From: %s\nTo: %s\n\n' %(remitente, destinatario)
>     mensaje += 'CheckTraz: Acceso a sitio prohibido...\n'
>     mensaje += 'ha ocurrido un acceso a sitio prohibido, revise el siguiente
> enlace:\n'
>
>     servidor.sendmail(remitente, destinatario, mensaje)
>
> EnviarCorreo()
>
>   

_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es







		
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y móviles desde 1 céntimo por minuto. 
http://es.voice.yahoo.com




Más información sobre la lista de distribución Python-es