sábado, 3 de noviembre de 2012

Enviando mails con Python! [Python][SMTP]

Boas a todxs,

Hoxe imos a aprender a usar a librería smtp (send mail transfer protocol) ou noutras palabras, imos enviar correo electrónico con un script en python, o código que adxunto é unha pequena porción dun script maligno que tiña feito fai un tempo.

O primeiro que temos que coñecer é como funciona o protocolo de envío de mail (SMTP) e que é MIME (Multipurpose Internet Mail Extensions). Están moi ben explicados na galipedia e penso que o importante é o que segue a continuación, así que aí vai primeiro o código e logo con explicacións.

#!/usr/bin/env python
#por hacklego
#para Hackliza
#twitter:@hacklego

import smtplib
import mimetypes
from email.MIMEText import MIMEText
from email.Encoders import encode_base64

def enviarmail(user, password, body, subject, to):
  try:
    mensaxe = MIMEText(body)
    mensaxe['From']=user
    mensaxe['To']=to
    mensaxe['Subject']=subject
    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(user, password)
    mailServer.sendmail(user, to, mensaxe.as_string())
    print 'Mensaxe enviado correctamente'
    mailServer.close()
  except:
    print 'Error ao enviar a mensaxe'

while True:
  print 'Benvidxs'
  user = raw_input('Usuario: ')
  password = raw_input('Contrasinal: ')
  body = raw_input('Mensaxe: ')
  subject = raw_input('Asunto: ')
  to = raw_input('Para: ')
  enviarmail(user, password, body, subject, to)

#!/usr/bin/env python
#por hacklego
#para Hackliza
#twitter:@hacklego

#importamos as librerias smtp e mime
import smtplib
import mimetypes
from email.MIMEText import MIMEText
from email.Encoders import encode_base64

#defenimos a funcion "enviarmail"
def enviarmail(user, password, body, subject, to):
  #Excepcion, un try, intentar que:
  try:
    #O uso do smtp pidenos que definamos un corpod e mensaxe, desde, hacia e asunto que nos simplificaremos en ususario (user)
    #destinatario (to) e asunto (subject)
    mensaxe = MIMEText(body)
    mensaxe['From']=user
    mensaxe['To']=to
    mensaxe['Subject']=subject
    #Agora definimos o noso servizo de envio de mail, neste caso gmail
    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(user, password)
    mailServer.sendmail(user, to, mensaxe.as_string())
    #respostamos en caso de que se consiga enviar coa seguinte mensaxe
    print 'Mensaxe enviado correctamente'
    mailServer.close()
  #se o "try" falla chegara a excepcion que enviará mensaxe de error
  except:
    print 'Error ao enviar a mensaxe'

#menu
while True:
  print 'Benvidxs'
  user = raw_input('Usuario: ')
  password = raw_input('Contrasinal: ')
  body = raw_input('Mensaxe: ')
  subject = raw_input('Asunto: ')
  to = raw_input('Para: ')
  #cos datos recollidos lanzamos a funcion "enviarmail"
  enviarmail(user, password, body, subject, to)

Agardo gostásedes!

No hay comentarios:

Publicar un comentario