Skip to content

Instantly share code, notes, and snippets.

@blaxter
Created October 17, 2014 10:49
Show Gist options
  • Save blaxter/205ea2f725d6aa0629af to your computer and use it in GitHub Desktop.
Save blaxter/205ea2f725d6aa0629af to your computer and use it in GitHub Desktop.
send mails
#!/usr/bin/env python
import smtplib
import argparse
parser = argparse.ArgumentParser(description='Send massive emails')
parser.add_argument('to_addr_list', metavar='TO', type=str, nargs='+',
help='List of addresses to send the emails')
parser.add_argument('--number', '-n', type=int, default=100,
help='Number of emails to send)')
parser.add_argument('--username', '-u', help='SMTP login')
parser.add_argument('--password', '-p', help='SMTP password')
parser.add_argument('--host', default="localhost", help='SMTP host')
parser.add_argument('--subject', default="Mail subject", help='Subject of the mail to send')
parser.add_argument('--message', default="Mail body", help='Body of the mail to send')
def connect_smtp(host, username, password):
server = smtplib.SMTP(host)
server.login(username, password)
return server
def send_email(server, from_addr, to_addr_list, subject, message):
header = 'From: %s\n' % from_addr
header += 'To: %s\n' % ','.join(to_addr_list)
header += 'Subject: %s\n\n' % subject
message = header + message
return server.sendmail(from_addr, to_addr_list, message)
args = parser.parse_args()
server = connect_smtp(args.host, args.username, args.password)
if args.number > 1:
for i in xrange(args.number):
subject = "%s %d" % (args.subject, i + 1)
message = "%s %d" % (args.message, i + 1)
send_email(server, args.username, args.to_addr_list, subject, message)
elif args.number == 1:
send_email(server, args.username, args.to_addr_list, args.subject, args.message)
else:
print "Ok, 0 emails sent"
@blaxter
Copy link
Author

blaxter commented Oct 17, 2014

python send_emails.py -n 300 -u user3@foo.bar -p foobar --host localhost --subject "subject foo " --message "message bar" user3@foo.bar user2@foo.bar user1@foo.bar user0@foo.bar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment