from __future__ import print_function import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders import locale import datetime import inspect import sys, os import prj_common as mycommon import GlobalVariable as MYSY_GV from dateutil import tz import pytz import sib_api_v3_sdk from sib_api_v3_sdk.rest import ApiException configuration = sib_api_v3_sdk.Configuration() configuration.api_key['api-key'] = MYSY_GV.SENDINBLUE_API_KEY api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(configuration)) locale.setlocale(category=locale.LC_ALL, locale='fr_FR.utf8') smtp_address = 'smtp-relay.sendinblue.com' port = 587 sender = 'contact@mysy-training.com' receiver = ["cbalde3@mysy-training.com","billardman1@gmail.com"] user = 'contact@mysy-training.com' password = 'yGmzqBfrjb3YCvQN' def send_user_account_mail(message, account_mail): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = 'MySy Training : Activez votre compte ' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(account_mail) to = [{"email":str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] my_url = "" if (MYSY_GV.MYSY_ENV == "PROD"): my_url = "https://apimysy.iexercice.com/myclass/api/valide_user_account/"+str(message) elif (MYSY_GV.MYSY_ENV == "DEV"): my_url = "http://localhost:5000/myclass/api/valide_user_account/"+str(message) send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=15, params={"mysyurl": my_url, "user_name": str(account_mail), "id": "122CSR_id"}, to=to, bcc=bcc ) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False, " Impossible d'envoyer l'email de notification " ''' Cette fonction envoie un mail de remerciement apres l'activation du compte d'un utilisateur ''' def send_user_thks_mail(message, account_mail): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = 'MySy Training : Votre compte est actif ' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(account_mail) to = [{"email": str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] my_url = "" if (MYSY_GV.MYSY_ENV == "PROD"): my_url = "https://apimysy.iexercice.com/myclass/api/valide_user_account/" + str(message) elif (MYSY_GV.MYSY_ENV == "DEV"): my_url = "http://localhost:5000/myclass/api/valide_user_account/" + str(message) send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=16, params={ "user_name": str(account_mail),}, to=to, bcc=bcc ) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False, " Impossible d'envoyer l'email de notification " def send_partner_account_mail(message, account_mail): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") receiver = [str(account_mail)] toaddrs = ", ".join(receiver) my_url = "" if (MYSY_GV.MYSY_ENV == "PROD"): my_url = "https://apimysy.iexercice.com/myclass/api/valide_partnair_account/" + str(message) elif (MYSY_GV.MYSY_ENV == "DEV"): my_url = "http://localhost:5000/myclass/api/valide_partnair_account/"+str(message) print(" mail enoye à toaddrs : "+toaddrs) print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training]: activation de votre compte PRO' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(toaddrs) msg['Cc'] = 'contact@mysy-training.com' to = [{"email": str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=17, params={"mysyurl": my_url, "user_name": str(account_mail), }, to=to, bcc=bcc ) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False, " Impossible d'envoyer l'email de notification" ''' Envoie de l'email de reinitialisation du mot de passe du user ''' def send_user_init_pwd_mail(token, account_mail, type_account): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training Technology] : Reinitialisez votre mot de passe' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(account_mail) my_url = "" if (MYSY_GV.MYSY_ENV == "PROD"): my_url = "https://www.mysy-training.com/ResetUserPwd/" + str(token)+"/"+str(type_account) elif (MYSY_GV.MYSY_ENV == "DEV"): my_url = "http://localhost:3009/ResetUserPwd/" + str(token)+"/"+str(type_account) to = [{"email": str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=19, params={"mysyurl": my_url, "user_name": str(account_mail), }, to=to, bcc=bcc ) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False, " Impossible d'envoyer l'email de notification " ''' Envoie de l'email de suppression du compte utilisateur ''' def send_user_delete_account(token, account_mail): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training Technology] : Suppression de votre' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(account_mail) my_url = "" if( MYSY_GV.MYSY_ENV == "PROD"): my_url = "https://www.mysy-training.com/DeleteUserAccount/" + str(token) elif (MYSY_GV.MYSY_ENV == "DEV"): my_url = "http://localhost:3009/DeleteUserAccount/" + str(token) to = [{"email": str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=20, params={"mysyurl": my_url, "user_name": str(account_mail), }, to=to, bcc=bcc ) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False, " Impossible d'envoyer l'email de notification " ''' Cette fonction envoir n'import quel email avec les varibable : - recever_email - objet_mail - message_mail ''' def SendGenericEmail(mail_recever=None, mail_object=None, mail_message=None): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training Technology] : '+str(mail_object) msg['From'] = MYSY_GV.INTERNAL_MAIL_SENDER msg['To'] = str(mail_recever) html = '''

Mysy Training Logo

Bonjour
Message de MySy-Training Technology .
{mymessage}
'''.format(mymessage=mail_message) html_mime = MIMEText(html, 'html') # msg.attach(texte_mime) msg.attach(html_mime) print("html_mime =" + str(html)) toaddr = str(mail_recever) cc = ['cbalde@mysy-training.com'] toaddrs = [toaddr] + cc # msg.attach(MIMEText(open(filename).read())) with smtplib.SMTP(smtp_address, port) as server: server.starttls() # Secure the connection server.login(user, password) server.sendmail(sender, toaddrs, msg.as_string()) mycommon.myprint("mail successfully sent to " + str(toaddrs)) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False ''' Apres l'activation du compte pro, cet email envoie le token et mot de passe temporaire à l'utilisateur ''' def Pro_Account_Token_Pass(account_mail, my_token): try: tomorrow = datetime.date.today() + datetime.timedelta(days=1) tomorrow_day = tomorrow.strftime("%A") receiver = [str(account_mail)] toaddrs = ", ".join(receiver) print(" mail enoye à toaddrs : " + toaddrs) print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training]: votre compte PRO est pret' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(toaddrs) msg['Cc'] = 'contact@mysy-training.com' cle = my_token print(" mail enoye à toaddrs : " + str(msg['To'])) to = [{"email": str(account_mail)}] bcc = [{"email": "contact@mysy-training.com"}] send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=18, params={"user_name": str(account_mail), "secrete":str(my_token) }, to=to, bcc=bcc) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False ''' Cette fonction envoie l'email de confirmation de la commande de vente ''' def SalesOrderConfirmationEmail(account_mail, diction): try: ''' Verification des données obligatoires ''' ''' Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, On controle que les champs obligatoires sont presents dans la liste ''' field_list_obligatoire = ['invoice_nom', 'invoice_adr_city', 'invoice_adr_country', 'invoice_adr_street', 'invoice_adr_zip', 'periodicite', 'total_ht', 'total_tva', 'total_ttc', 'order_id', 'date_update', 'nb_product', 'order_date'] for val in field_list_obligatoire: if val not in diction: mycommon.myprint(str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ") return False, " Impossible d'envoyer l'email de confirmation" total_ht = diction['total_ht'] tva = diction['total_tva'] total_ttc = diction['total_ttc'] client_name = diction['invoice_nom'] client_address = diction['invoice_adr_street'] client_zip_ville = diction['invoice_adr_zip']+" "+diction['invoice_adr_city'] client_pays = diction['invoice_adr_country'] order_id = diction['order_id'] date_order = diction['order_date'] my_end_date = "" if ("end_date" in diction.keys()): if diction.keys(): my_end_date = "*Offre valable jusqu'au "+str(diction['end_date']) nb_line = mycommon.tryInt(diction['nb_product']) if( nb_line == 0 ): mycommon.myprint(str(inspect.stack()[0][3]) + " - nb_line = '" + nb_line + "' : Aucun produit à facturer") return False, " Impossible d'envoyer l'email de confirmation" print("client_name = "+str(client_name)) print("client_address = " + str(client_address)) print("client_zip_ville = " + str(client_zip_ville)) print("client_pays = " + str(client_pays)) print("order_id = " + str(order_id)) print("date_order = " + str(date_order)) print("nb_line = " + str(nb_line)) print("End Date = " + str(my_end_date)) # Recuperation des produits (max 3 produits) # produit 1 if ("item_0" in diction.keys()): if( diction["item_0"] ): packs = diction["item_0"]['code'] qty = diction["item_0"]['qty'] unit_price = diction["item_0"]['prix'] montant = diction["item_0"]['amount'] detail_packs = diction["item_0"]['pack_products'] print("diction['item_0']['pack_products'] = "+str(diction["item_0"]['pack_products'])) # produit 2 if ("item_1" in diction.keys()): if (diction["item_1"]): packs1 = diction["item_1"]['code'] qty1 = diction["item_0"]['qty'] unit_price1 = diction["item_1"]['prix'] montant1 = diction["item_1"]['amount'] detail_packs1 = diction["item_1"]['pack_products'] # produit 3 if ("item_2" in diction.keys()): if (diction["item_2"]): packs2 = diction["item_2"]['code'] qty2 = diction["item_0"]['qty'] unit_price2 = diction["item_2"]['prix'] montant2 = diction["item_2"]['amount'] detail_packs2 = diction["item_1"]['pack_products'] i = 0 while (i < nb_line): row = "item_" + str(i) print(" product = "+ str(diction[str(row)])) i = i + 1 receiver = [str(account_mail)] toaddrs = ", ".join(receiver) print(" mail enoye à toaddrs : " + toaddrs) print("debut envoi mail de test ") # on rentre les renseignements pris sur le site du fournisseur msg = MIMEMultipart("alternative") msg['Subject'] = '[MySy Training]: votre compte PRO est pret' msg['From'] = 'contact@mysy-training.com' msg['To'] = str(toaddrs) msg['Cc'] = 'contact@mysy-training.com' to = [{"email": str(account_mail)}] print(" ############# to = "+str(to)) bcc = [{"email": "contact@mysy-training.com"}] send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(template_id=22, params={"order_id": order_id, "date_order": date_order, "total_ht": total_ht, "tva": tva, "total_ttc": total_ttc, "client_name": client_name, "client_address": client_address, "client_zip_ville": client_zip_ville, "client_pays": client_pays, "packs": packs, "detail_packs": detail_packs, "qty": qty, "unit_price": unit_price, "montant":montant, "end_date": my_end_date, }, to=to, bcc=bcc) api_response = api_instance.send_transac_email(send_smtp_email) print(api_response) return True except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) return False