Skip to main content

Envio de mails en python: simplemail.py & send_mail.py

Posted in

send_mail.py es una clase que me hice en python para el envio simple de mails mediante la libreria smtplib. Si estudiais un poco el código vereis que es muy sencilla de utilizar. Junto a ella adjunto otro pequeño script (simplemail.py) que me hice para enviar mails de manera interactiva utilizando dicha clase, el resultado de su ejecución seria como el siguiente:

bash-3.2$ python simplemail.py
Mail Server: smtp.gmail.com
Mail from: midireccion@gmail.com
Mail to: tudireccion@gmail.com
User (leave blank to use same of mail from):
Password:
Subject: Hola que tal

Write your message. Type '.' in a newline to end the message

---------- Begin message ---------
Esto es una pequeña prueba de envio de mail mediante python
.
---------- End message ---------

Use TLS [0,1]: 1

Sending Mail...

bash-3.2$

simplemail.py

import send_mail
import getpass

mail = send_mail.SendMail( raw_input('Mail Server: ') )
mail.setDebug(1)

mailfrom = raw_input('Mail from: ')
mailto = raw_input('Mail to: ')
mail.setMailFrom(mailfrom)
mail.setMailTo(mailto)

user = raw_input('User (leave blank to use same of mail from): ')
if len(user) == 0:
	user = mailfrom	
passw = getpass.getpass('Password: ')
mail.setLogin(user,passw)

subj = raw_input('Subject: ') 
mail.setSubject(subj)

print "\nWrite your message. Type '.' in a newline to end the message"
print "\n---------- Begin message ---------"

m = raw_input()
msg = ''

while m != '.':
	msg = msg +' \n' + m
	m = raw_input()

print "---------- End message ---------\n"
mail.setMsg(msg)

tls = raw_input('Use TLS [0,1]: ')
mail.setTls(tls)

print "\nSending Mail...\n"
mail.send()

send_mail.py

import smtplib
import string

class SendMail:
	def __init__(self, hostname):
		self.subject = ''
		self.tls = 0
		self.msg = ''
		self.mailTo = ''
		self.mailFrom = ''
		self.user = ''
		self.passw = ''
		self.debug = 0
		self.hostname = hostname

	def setSubject(self,subject):
		self.subject = subject;
	
	def setTls(self,tls):
		self.tls = int(tls)
	
	def setMsg(self,message):
		self.msg = message
	
	def setMailTo(self,mailto):
		self.mailTo = mailto
	
	def setMailFrom(self,mailfrom):
		self.mailFrom = mailfrom
	
	def setLogin(self,user,passw):
		self.user = user
		self.passw = passw
	
	def setDebug(self,debug):
		self.debug = debug

	def send(self):
		subject='Subject: ' + self.subject + '\n'

		server = smtplib.SMTP()
		server.connect(self.hostname,25)

		#Set debuglevel 1 to see server messages
		server.set_debuglevel(self.debug)
		
		server.ehlo()
		
		if self.tls != 0:
			server.starttls()
			server.ehlo()

		if len(self.user) + len(self.passw) != 0:
			server.login(self.user,self.passw)
		
		message = subject + self.msg;

		server.sendmail(self.mailFrom,self.mailTo,message)
		server.quit()