Categories
Old Posts

E-mails: hours to seconds

I remember those old times when i didn’t know nothing about computer programming and i was a member of the organization of the National Meeting of students of physiotherapy and after a conference about physiotherapy and spine related problems. At that time when we had to send some hundreds or even thousands of emails for other students and professional on that field, we spent hours or even days.

One of the problems was that our email provider (Gmail) didn’t allow to send a single email for more than ‘x’ people or send more than ‘y’ emails a day,if you had exceeded the limit they would block your account for the next 24 hours. For that problem the solution is don’t use Gmail for what it isn’t intended for. There are plenty other services to do that.

The other problem was the use of large files, full of emails adresses that we had to split through many emails. For this one, here is a possible solution, a script that connects to a SMTP server and sends the message to every contact in the “.txt” file.

import smtplib
from email.MIMEText import MIMEText

def send_to_all(server,login,passwd,subject,msg, cfile):
	contacts=open(cfile, 'r')
	email=MIMEText(msg)
	email['Subject']=subject
	email['From']=login
	
	smtp=smtplib.SMTP(server, 465) #change for 587 if doesnt work
	smtp.ehlo()
	smtp.starttls() #comment this line if the server doesnt support TLS
	smtp.login(login,passwd)
	
	for item in contacts:
		smtp.sendmail(login,item,email.as_string())
		
	smtp.close()

def main():
	#Asks the info to the user
	print "Server: "
	server=raw_input()
	print "Login: "
	login=raw_input()
	print "Password: "
	passwd=raw_input()
	print "Subject: "
	subject=raw_input()
	print "Message: "
	msg=raw_input()
	print "Contacts file: "
	cfile=raw_input()
	#sends the message to all contacts in the file
	send_to_all(server, login, passwd, subject, msg, cfile)
	return 0

if __name__ == '__main__':
	main()

With this script you can only send simple text messages, but it might be usefull for someone anyway.