-
Notifications
You must be signed in to change notification settings - Fork 0
/
email_handler_imap.py
145 lines (130 loc) · 4.84 KB
/
email_handler_imap.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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import email.message
import os
import time
import imaplib
host = os.environ.get('email_host_python')
username = os.environ.get('email_username')
password = os.environ.get('email_password')
class MyIMAPClient:
def __init__(self, host, username, password):
self.host = host
self.username = username
self.password = password
self.connection = None
def login(self):
self.connection = imaplib.IMAP4_SSL(self.host)
return self.connection.login(user=self.username, password=self.password)
def establish_connection(self):
if not self.connection:
self.login()
return self.connection
try:
email_client = MyIMAPClient(host, username, password)
email_client.login()
connection = email_client.establish_connection()
print('email connection established')
except:
print("exception")
connection = "null"
def create_email(subject:str, email_from:str, emails_to:list, emails_cc:list, emails_bcc:list, body=str):
msg = email.message.Message()
msg["Subject"] = subject
msg["From"] = email_from
msg["To"] = emails_to
msg["Cc"] = emails_cc
msg["Bcc"] = emails_bcc
msg.set_payload(body)
# with imaplib.IMAP4_SSL(host) as c:
# c.login(user=username, password=password)
# c.append('DRAFTS', '',
# imaplib.Time2Internaldate(time.time()),
# str(msg).encode('utf-8'))
# return "Email Draft Generated"
# connection = email_client.establish_connection()
if connection:
connection.append('DRAFTS', '',
imaplib.Time2Internaldate(time.time()),
str(msg).encode('utf-8'))
print("Email Draft Generated")
else:
print("Failed to create draft")
def create_ptkd_receipt_email(subject:str, email_from:str, emails_to:list, emails_cc:list, emails_bcc:list, file_tempate:str, receipt_data:list):
msg = email.message.Message()
msg["Subject"] = subject
msg["From"] = email_from
msg["To"] = emails_to
msg["Cc"] = emails_cc
msg["Bcc"] = emails_bcc
body = ''
## template specific logic is below
with open(file_tempate, 'r') as f:
for i, line in enumerate(f):
line = line.rstrip('\n')
if i == 4:
line = line + time.strftime("%Y/%m/%d")
elif i == 5:
line = line + emails_to
elif i == 6:
line = line + receipt_data[0]
elif i == 8:
line = line + receipt_data[1]
elif i == 9:
line = line + '$' + receipt_data[2] + "." + str(0) + str(0)
elif i == 10:
line = line + ("E-Transfer" if receipt_data[3] == 1 else "Cheque/Cash")
body = body + '\n' + line
msg.set_payload(body)
# with imaplib.IMAP4_SSL(host) as c:
# c.login(user=username, password=password)
# c.append('DRAFTS', '',
# imaplib.Time2Internaldate(time.time()),
# str(msg).encode('utf-8'))
# print("Email Draft Generated")
if connection != "null":
connection.append('DRAFTS', '',
imaplib.Time2Internaldate(time.time()),
str(msg).encode('utf-8'))
print("Email Draft Generated")
else:
print("Failed to create draft")
print(msg)
def create_pkrt_receipt_email(subject:str, email_from:str, emails_to:list, emails_cc:list, emails_bcc:list, file_tempate:str, receipt_data:list):
msg = email.message.Message()
msg["Subject"] = subject
msg["From"] = email_from
msg["To"] = emails_to
msg["Cc"] = emails_cc
msg["Bcc"] = emails_bcc
body = ''
## template specific logic is below
with open(file_tempate, 'r') as f:
for i, line in enumerate(f):
line = line.rstrip('\n')
if i == 4:
line = line + time.strftime("%Y/%m/%d")
elif i == 5:
line = line + emails_to
elif i == 6:
line = line + receipt_data[0]
elif i == 8:
line = line + receipt_data[1]
elif i == 9:
line = line + '$' + receipt_data[2] + "." + str(0) + str(0)
elif i == 10:
line = line + ("E-Transfer" if receipt_data[3] == 1 else "Cheque/Cash")
body = body + '\n' + line
msg.set_payload(body)
# with imaplib.IMAP4_SSL(host) as c:
# c.login(user=username, password=password)
# c.append('DRAFTS', '',
# imaplib.Time2Internaldate(time.time()),
# str(msg).encode('utf-8'))
# print("Email Draft Generated")
if connection != "null":
connection.append('DRAFTS', '',
imaplib.Time2Internaldate(time.time()),
str(msg).encode('utf-8'))
print("Email Draft Generated")
else:
print("Failed to create draft")
print(msg)