diff --git a/email_mgt.py b/email_mgt.py index df64e28..114b3bc 100644 --- a/email_mgt.py +++ b/email_mgt.py @@ -4,6 +4,8 @@ from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders +from email.message import EmailMessage + import locale import datetime import inspect @@ -14,6 +16,8 @@ from dateutil import tz import pytz import sib_api_v3_sdk from sib_api_v3_sdk.rest import ApiException +import jinja2 + configuration = sib_api_v3_sdk.Configuration() configuration.api_key['api-key'] = MYSY_GV.SENDINBLUE_API_KEY @@ -364,7 +368,7 @@ def Pro_Account_Token_Pass(account_mail, my_token): ''' Cette fonction envoie l'email de confirmation de la commande de vente ''' -def SalesOrderConfirmationEmail(account_mail, diction): +def SalesOrderConfirmationEmail_old(account_mail, diction): try: ''' Verification des données obligatoires @@ -646,3 +650,505 @@ def SendInvoiceEmail(account_mail, diction): 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 + + +""" +Email generic pour se subsituer sendinblu +""" +def MysyGenericEmail( ): + try: + tomorrow = datetime.date.today() + datetime.timedelta(days=1) + tomorrow_day = tomorrow.strftime("%A") + mail_recever = "billardman01@hotmail.com" + mail_object = " new mysy email" + mail_message = " le message : corps du mail " + + + password = 'GomboyaVince1234+' + smtpsrv = "smtp.office365.com" + smtpserver = smtplib.SMTP(smtpsrv, 587) + user = "cbalde@mysy-training.com" + + + + print("debut envoi mail de test ") + # on rentre les renseignements pris sur le site du fournisseur + + #msg = MIMEMultipart("alternative") + msg = EmailMessage() + msg['Subject'] = '[MySy Training Technology] : ' + str(mail_object) + msg['From'] = "cbalde@mysy-training.com" + msg['To'] = str(mail_recever) + """ + html = ''' + + + +
+

+ Mysy Training Logo

+
+
+
+
+ Bonjour +
+ + Message de MySy-Training Technology .
+ ici le message de cherif
+ {mymessage} +
+ + '''.format(mymessage=mail_message) + """ + msg.set_content(''' + + + +
+
+ + Mysy Training Logo +
+
+
+ +
+

Article 1

+

+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. A + ducimus deleniti nemo quibusdam iste sint! +

+ Read more +
+
+
+
+ + + + + + ''', subtype='html') + #html_mime = MIMEText(html, 'html') + + # msg.attach(texte_mime) + #msg.attach(html_mime) + + smtpserver.ehlo() + smtpserver.starttls() + smtpserver.login(user, password) + smtpserver.send_message(msg) + smtpserver.close() + + """ + 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, "mail envoyé" + 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, " Impossible d'envoyer le mail" + + +""" envoie email avec template """ +def MysyGenericEmail_tpl(): + try: + tomorrow = datetime.date.today() + datetime.timedelta(days=1) + tomorrow_day = tomorrow.strftime("%A") + mail_recever = "billardman01@hotmail.com,cherif.balde@yahoo.fr,cbalde@mysy-training.com" + mail_object = " new mysy email" + mail_message = " le message : corps du mail " + + password = 'GomboyaVince1234+' + smtpsrv = "smtp.office365.com" + smtpserver = smtplib.SMTP(smtpsrv, 587) + user = "cbalde@mysy-training.com" + + print("debut envoi mail de test ") + # on rentre les renseignements pris sur le site du fournisseur + + # msg = MIMEMultipart("alternative") + msg = EmailMessage() + msg['Subject'] = '[MySy Training Technology] : ' + str(mail_object) + msg['From'] = "cbalde@mysy-training.com" + msg['To'] = str(mail_recever) + + # JINJA2 + templateLoader = jinja2.FileSystemLoader(searchpath="./") + templateEnv = jinja2.Environment(loader=templateLoader) + TEMPLATE_FILE = "Template/tpl_mail_test.html" + template = templateEnv.get_template(TEMPLATE_FILE) + # This data can come from database query + body = { + "user": {"nom":"BALDE", "prenom":"sekou"}, + "session": {"title":"le titre", "date_du": "01/01/01", "date_fin": "02/02/02"} + } + sourceHtml = template.render(user=body["user"], session=body["session"]) + + + print('### sourceHtml = '+str(sourceHtml)) + + + # END JINJA + + msg.set_content(sourceHtml, subtype='html') + # html_mime = MIMEText(html, 'html') + + # msg.attach(texte_mime) + # msg.attach(html_mime) + + smtpserver.ehlo() + smtpserver.starttls() + smtpserver.login(user, password) + smtpserver.send_message(msg) + smtpserver.close() + + """ + 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, "mail envoyé" + 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, " Impossible d'envoyer le mail" + + +""" Envoie de l'email de commande avec un template local """ +def MysyOrderEmail_tpl(): + try: + tomorrow = datetime.date.today() + datetime.timedelta(days=1) + tomorrow_day = tomorrow.strftime("%A") + mail_recever = "billardman01@hotmail.com,cherif.balde@yahoo.fr,cbalde@mysy-training.com" + mail_object = " new mysy email" + mail_message = " le message : corps du mail " + + password = 'GomboyaVince1234+' + smtpsrv = "smtp.office365.com" + smtpserver = smtplib.SMTP(smtpsrv, 587) + user = "cbalde@mysy-training.com" + + print("debut envoi mail de test ") + # on rentre les renseignements pris sur le site du fournisseur + + # msg = MIMEMultipart("alternative") + msg = EmailMessage() + + + # JINJA2 + templateLoader = jinja2.FileSystemLoader(searchpath="./") + templateEnv = jinja2.Environment(loader=templateLoader) + TEMPLATE_FILE = "Template/MySy_Sales_Order_tpl.html" + template = templateEnv.get_template(TEMPLATE_FILE) + # This data can come from database query + body = { + "params": {"client_name":"BALDE", + "client_address":"sekou", + "client_zip_ville": "sekou", + "client_pays": "sekou", + "order_id": "sekou", + "date_order": "sekou", + "packs": "sekou", + "qty": "sekou", + "unit_price": "sekou", + "montant": "sekou", + "detail_packs": "sekou", + "total_ht": "sekou", + "tva": "sekou", + "montant": "sekou", + }, + "user":{"nom":"balde", "prenom":"sekou"}, + + } + sourceHtml = template.render(params=body["params"], user=body["user"]) + + msg.set_content(sourceHtml, subtype='html') + + msg['Subject'] = "[MySy Training] : Confirmation commande N°1222" + msg['From'] = "cbalde@mysy-training.com" + msg['To'] = str(mail_recever) + + # html_mime = MIMEText(html, 'html') + + # msg.attach(texte_mime) + # msg.attach(html_mime) + + smtpserver.ehlo() + smtpserver.starttls() + smtpserver.login(user, password) + smtpserver.send_message(msg) + smtpserver.close() + + """ + 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, "mail envoyé" + 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, " Impossible d'envoyer le mail" + + +''' +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) + + """ + #---------- + mail_recever = "billardman01@hotmail.com,cherif.balde@yahoo.fr,cbalde@mysy-training.com" + mail_object = " new mysy email" + mail_message = " le message : corps du mail " + + password = 'GomboyaVince1234+' + smtpsrv = "smtp.office365.com" + smtpserver = smtplib.SMTP(smtpsrv, 587) + user = "cbalde@mysy-training.com" + + print("debut envoi mail de test ") + # on rentre les renseignements pris sur le site du fournisseur + + # msg = MIMEMultipart("alternative") + msg = EmailMessage() + + # JINJA2 + templateLoader = jinja2.FileSystemLoader(searchpath="./") + templateEnv = jinja2.Environment(loader=templateLoader) + TEMPLATE_FILE = "Template/MySy_Sales_Order_tpl.html" + template = templateEnv.get_template(TEMPLATE_FILE) + # This data can come from database query + body = { + "params": {"order_id": order_id, + "date_order": date_order, + "total_ht": total_ht, + "tva": tva, + "total_ttc": total_ttc, + "client_name": client_name, + "client_email":str(account_mail), + "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, + }, + + } + sourceHtml = template.render(params=body["params"]) + + msg.set_content(sourceHtml, subtype='html') + + msg['Subject'] = "[MySy Training] : Confirmation commande N°"+str(order_id) + msg['From'] = "cbalde@mysy-training.com" + msg['To'] = str(mail_recever) + + # html_mime = MIMEText(html, 'html') + + # msg.attach(texte_mime) + # msg.attach(html_mime) + + smtpserver.ehlo() + smtpserver.starttls() + smtpserver.login(user, password) + smtpserver.send_message(msg) + smtpserver.close() + + #-------- + + + + 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 + diff --git a/main.py b/main.py index c6dc52f..b217479 100644 --- a/main.py +++ b/main.py @@ -1871,6 +1871,30 @@ def SendPre_InscriptionEmail(): +""" +API pour tester les nice emails de cherif (alternative à sendinblu) +""" +@app.route('/myclass/api/MysyGenericEmail_tpl/', methods=['POST','GET']) +@crossdomain(origin='*') +def MysyGenericEmail_tpl(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### MysyGenericEmail : payload = ",str(payload)) + localStatus, message= emails.MysyGenericEmail_tpl() + return jsonify(status=localStatus, message=message ) + +@app.route('/myclass/api/MysyOrderEmail_tpl/', methods=['POST','GET']) +@crossdomain(origin='*') +def MysyOrderEmail_tpl(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### MysyOrderEmail_tpl : payload = ",str(payload)) + localStatus, message= emails.MysyOrderEmail_tpl() + return jsonify(status=localStatus, message=message ) + + + + if __name__ == '__main__':