-
Notifications
You must be signed in to change notification settings - Fork 0
/
csv_mailer.py
64 lines (50 loc) · 1.96 KB
/
csv_mailer.py
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
import sys, pandas as pd, win32com.client as win32
print ('number of arguments passed: ', format(len(sys.argv)), '- ok')
if len(sys.argv) != 3:
print('error. please enter the paths to email list (csv) and desired email content (txt) along with script')
exit()
else:
print(str(sys.argv[1]))
if sys.argv[1].endswith('.csv'):
csv = sys.argv[1]
elif sys.argv[1].endswith('.txt'):
txt = sys.argv[1]
if sys.argv[2].endswith('.csv'):
csv = sys.argv[2]
elif sys.argv[2].endswith('.txt'):
txt = sys.argv[2]
o = win32.Dispatch('Outlook.Application')
for acc in o.Session.Accounts:
if acc.DisplayName == '[email protected]':
sender = acc
break
df = pd.read_csv(csv,sep=';')
df_red = df[['VORNAME','NACHNAME','EMAIL','LV_TITEL','STATUS']].copy()
text_file = open(txt)
content = str(text_file.read())
trigger = input('test (T) or execute (E)?')
diff_string_e = 'sending to:'
diff_string_t = 'would be sent to:'
for i in range(len(df_red)):
if pd.isna(df_red.at[i,'LV_TITEL']) == False and df_red.at[i,'STATUS'] != 'Fixplatz':
#print(i, df_red.at[i,'VORNAME'])
recipient = df_red.at[i,'EMAIL']
firstname = df_red.at[i,'VORNAME']
lastname = df_red.at[i,'NACHNAME']
LV_name = df_red.at[i,'LV_TITEL']
mail = o.CreateItem(0)
mail.Recipients.Add(recipient)
mail.Subject = 'Your registration for \"' + str(LV_name) +'\"'
mail.Bodyformat = 1
mail.Body = 'Dear ' + str(firstname) + ' ' + str(lastname) + ',' + content
mail._oleobj_.Invoke(*(64209, 0, 8, 0, sender))
#mail.Display() # to open current mail in outlook
if trigger == 'E' or trigger == 'e':
string_act = diff_string_e
mail.Send()
elif trigger == 'T' or trigger == 't':
string_act = diff_string_t
else:
print('wrong answer, bye')
exit()
print(string_act, firstname, lastname, '(', recipient, ')', 'for: ', LV_name)