summaryrefslogtreecommitdiff
path: root/src/send-mail-batch.py
blob: 4d889f7a3f0499f32afd64e744fa5ecfb41e85b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
# encoding: utf-8
# import getpass
import os
import sys
import random
import time

from ConfigParser import SafeConfigParser

from gmail import GMail


def send_test_mail(subject):
    # make a list of attachments, add all the files in 'directory'
    directory = './attachments/'
    file_list = []

    # randomize the use of attachments
    if random.choice([True, False]):
        for filename in os.listdir(directory):
            path = os.path.join(directory, filename)
            if os.path.isfile(path):
                file_list.append(path)

        # randomize attachments
        ammount = random.randint(0, len(file_list)-1)
        random.shuffle(file_list)
        file_list = file_list[0:ammount]

    msg = ('Howdy from python!\n'
           'The subject: {0}\n'
           "Current date & time: {1}\n"
           "Trying to attach: {2!r}"
           ).format(subject, time.strftime("%c"), file_list)

    return gmail.send_email(
        to_addr_list=TO, cc_addr_list=[],
        subject=subject, message=msg, attachments=file_list)

# Read subjects from file
lorem_subjects = []
lorem_file = './lorem-ipsum-subjects.txt'
with open(lorem_file) as lorem:
    lorem_subjects = [line.strip() for line in lorem]


# Mail account to send from:
# use this if you want to enter manually your password:
# FROM = 'your.username@gmail.com'
# SECRET = getpass.getpass("Password for {0}: ".format(FROM))

# MAX_MAILS = 10
# TO = ['test_account@dev.bitmask.net']

# Read credentials from options file
parser = SafeConfigParser()
parser.read('options.cfg')
try:
    FROM = parser.get('Credentials', 'account')
    SECRET = parser.get('Credentials', 'password')
    TO = [parser.get('Configs', 'to')]
    MAX_MAILS = parser.getint('Configs', 'mails_amount')
except Exception as e:
    print "Problem reading options.cfg"
    print "Exception: {0!r}".format(e)
    sys.exit()


# create the GMail global object
gmail = GMail(FROM, SECRET)

print "Sending {0} mails batch...".format(MAX_MAILS)

count = 0
while count < MAX_MAILS:
    idx = (count % len(lorem_subjects))
    subject = "[TEST] {0:03} - {1}".format(count+1, lorem_subjects[idx])
    print "Sending '{0}' ... ".format(subject),
    try:
        problems = send_test_mail(subject)
    except Exception as e:
        problems = repr(e)

    if problems:
        print "Problems: {0!r}".format(problems)
    else:
        print 'ok.'

    count += 1