diff --git a/bin/Curve.py b/bin/Curve.py index 07f690de..ede3ad29 100755 --- a/bin/Curve.py +++ b/bin/Curve.py @@ -48,6 +48,9 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7] top_termFreq_setName_month = ["TopTermFreq_set_month", 31] top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month] +# create direct link in mail +full_paste_url = "http://localhost:7000/showsavedpaste/?paste=" + def check_if_tracked_term(term, path): if term in server_term.smembers(TrackedTermsSet_Name): #add_paste to tracked_word_set @@ -59,9 +62,14 @@ def check_if_tracked_term(term, path): # Send a notification only when the member is in the set if term in server_term.smembers(TrackedTermsNotificationEnabled_Name): + # create mail body + mail_body = ("AIL Framework,\n" + "New occurrence for term: " + term + "\n" + ''+full_paste_url + path) + # Send to every associated email adress for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + term): - sendEmailNotification(email, term) + sendEmailNotification(email, 'Term', mail_body) def getValueOverRange(word, startDate, num_day): diff --git a/bin/NotificationHelper.py b/bin/NotificationHelper.py index 8c65bb3d..6dad63c7 100755 --- a/bin/NotificationHelper.py +++ b/bin/NotificationHelper.py @@ -21,7 +21,7 @@ TrackedTermsNotificationEnabled_Name = "TrackedNotifications" # Keys will be e.g. TrackedNotificationEmails TrackedTermsNotificationEmailsPrefix_Name = "TrackedNotificationEmails_" -def sendEmailNotification(recipient, term): +def sendEmailNotification(recipient, alert_name, content): if not os.path.exists(configfile): raise Exception('Unable to find the configuration file. \ @@ -57,7 +57,13 @@ def sendEmailNotification(recipient, term): try: if sender_pw is not None: - smtp_server = smtplib.SMTP_SSL(sender_host, sender_port) + try: + smtp_server = smtplib.SMTP(sender_host, sender_port) + smtp_server.starttls() + except smtplib.SMTPNotSupportedError: + print("The server does not support the STARTTLS extension.") + smtp_server = smtplib.SMTP_SSL(sender_host, sender_port) + smtp_server.ehlo() smtp_server.login(sender, sender_pw) else: @@ -67,13 +73,14 @@ def sendEmailNotification(recipient, term): mime_msg = MIMEMultipart() mime_msg['From'] = sender mime_msg['To'] = recipient - mime_msg['Subject'] = "AIL Term Alert" + mime_msg['Subject'] = "AIL Framework "+ alert_name + " Alert" - body = "New occurrence for term: " + term + body = content mime_msg.attach(MIMEText(body, 'plain')) smtp_server.sendmail(sender, recipient, mime_msg.as_string()) smtp_server.quit() + print('Send notification '+ alert_name + ' to '+recipient) except Exception as e: print(str(e)) diff --git a/bin/RegexForTermsFrequency.py b/bin/RegexForTermsFrequency.py index 7aea03f0..0300c042 100755 --- a/bin/RegexForTermsFrequency.py +++ b/bin/RegexForTermsFrequency.py @@ -35,6 +35,8 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7] top_termFreq_setName_month = ["TopTermFreq_set_month", 31] top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month] +# create direct link in mail +full_paste_url = "http://localhost:7000/showsavedpaste/?paste=" def refresh_dicos(): dico_regex = {} @@ -96,9 +98,15 @@ if __name__ == "__main__": if regex_str_complete not in server_term.smembers(BlackListTermsSet_Name): # Send a notification only when the member is in the set if regex_str_complete in server_term.smembers(TrackedTermsNotificationEnabled_Name): + + # create mail body + mail_body = ("AIL Framework,\n" + "New occurrence for regex: " + regex_str + "\n" + ''+full_paste_url + filename) + # Send to every associated email adress for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + regex_str_complete): - sendEmailNotification(email, regex_str) + sendEmailNotification(email, 'Term', mail_body) set_name = 'regex_' + dico_regexname_to_redis[regex_str] new_to_the_set = server_term.sadd(set_name, filename) diff --git a/bin/SetForTermsFrequency.py b/bin/SetForTermsFrequency.py index b42f07e6..4386c535 100755 --- a/bin/SetForTermsFrequency.py +++ b/bin/SetForTermsFrequency.py @@ -34,6 +34,9 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7] top_termFreq_setName_month = ["TopTermFreq_set_month", 31] top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month] +# create direct link in mail +full_paste_url = "http://localhost:7000/showsavedpaste/?paste=" + def add_quote_inside_tab(tab): quoted_tab = "[" for elem in tab[1:-1].split(','): @@ -105,9 +108,15 @@ if __name__ == "__main__": if eff_percent >= dico_percent[the_set]: # Send a notification only when the member is in the set if dico_setname_to_redis[str(the_set)] in server_term.smembers(TrackedTermsNotificationEnabled_Name): + + # create mail body + mail_body = ("AIL Framework,\n" + "New occurrence for term: " + dico_setname_to_redis[str(the_set)] + "\n" + ''+full_paste_url + filename) + # Send to every associated email adress for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + dico_setname_to_redis[str(the_set)]): - sendEmailNotification(email, dico_setname_to_redis[str(the_set)]) + sendEmailNotification(email, 'Term', mail_body) print(the_set, "matched in", filename) set_name = 'set_' + dico_setname_to_redis[the_set]