parent
b3d869c1be
commit
178c7e1a63
@ -0,0 +1,234 @@ |
||||
# import smtplib |
||||
# from email.mime.multipart import MIMEMultipart |
||||
# from email.mime.text import MIMEText |
||||
# import pyodbc |
||||
# import json |
||||
# import datetime |
||||
|
||||
# # Cargar la información de conexión desde el archivo JSON |
||||
# with open('config.json', 'r') as config_file: |
||||
# config = json.load(config_file) |
||||
|
||||
# # Crear una cadena de conexión usando la información del archivo JSON (en este momento esta la conexion a DB local) |
||||
# conn_str = ( |
||||
# f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
# f"SERVER={config['server']};" |
||||
# f"DATABASE={config['database']};" |
||||
# f"UID={config['username']};" |
||||
# f"PWD={config['password']};" |
||||
# ) |
||||
|
||||
# # Conectar a la base de datos |
||||
# conn = pyodbc.connect(conn_str) |
||||
|
||||
# try: |
||||
# cursor = conn.cursor() |
||||
# fecha = '2023-09-18' # Ejemplo de fecha |
||||
# cursor.execute("{CALL NotiVigenciaDoda(?)}", fecha) |
||||
|
||||
# # Recuperar los resultados del procedimiento almacenado |
||||
# rows = cursor.fetchall() |
||||
|
||||
# factura_data = {} |
||||
|
||||
# # Iterar a través de los resultados y agruparlos por factura |
||||
# for row in rows: |
||||
# invoice = row.Invoice |
||||
# if invoice not in factura_data: |
||||
# factura_data[invoice] = [] |
||||
# factura_data[invoice].append(row) |
||||
|
||||
# # Crear un diccionario para almacenar los correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje por factura |
||||
# correos_por_factura = {} |
||||
|
||||
# # Iterar a través de los resultados y agrupar los correos por factura |
||||
# for row in rows: |
||||
# invoice = row.Invoice |
||||
# if invoice not in correos_por_factura: |
||||
# correos_por_factura[invoice] = {'CorreosResponsables': [], 'NotificacionAA': [], 'CorreoTipoViaje': []} |
||||
|
||||
# # Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) |
||||
# first_row = factura_data[invoice][0] |
||||
# fechaActual = first_row.FechaActual |
||||
# caja = first_row.Caja |
||||
# vigenciaDoda = first_row.VigenciaDODA |
||||
# notificacion = first_row.Notificacion |
||||
|
||||
# # Preguntar al usuario por los correos para esta factura |
||||
# correos_responsables = input(f'Correos Responsables para la factura {invoice}: ').split(',') |
||||
# notificacion_aa = input(f'Correos NotificacionAA para la factura {invoice}: ').split(',') |
||||
# correos_tipo_viaje = input(f'Correos CorreoTipoViaje para la factura {invoice}: ').split(',') |
||||
|
||||
# correos_por_factura[invoice]['CorreosResponsables'].extend(correos_responsables) |
||||
# correos_por_factura[invoice]['NotificacionAA'].extend(notificacion_aa) |
||||
# correos_por_factura[invoice]['CorreoTipoViaje'].extend(correos_tipo_viaje) |
||||
|
||||
# # Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
# with open('config.json', 'r') as email_config_file: |
||||
# email_config = json.load(email_config_file) |
||||
|
||||
# smtp_server = email_config['EmailServer'] |
||||
# smtp_port = email_config['EmailPort'] |
||||
|
||||
# # Tus credenciales de correo electrónico desde el archivo JSON |
||||
# sender_email = email_config['EmailUser'] |
||||
# sender_password = email_config['EmailPassword'] |
||||
|
||||
# # Iterar a través de las facturas y enviar correos personalizados |
||||
# for invoice, correos_en_factura in correos_por_factura.items(): |
||||
# correos_responsables = correos_en_factura['CorreosResponsables'] |
||||
# notificacion_aa = correos_en_factura['NotificacionAA'] |
||||
# correos_tipo_viaje = correos_en_factura['CorreoTipoViaje'] |
||||
|
||||
# # Crear el mensaje de correo electrónico |
||||
# msg = MIMEMultipart() |
||||
# msg['From'] = sender_email |
||||
# msg['To'] = ', '.join(correos_responsables + notificacion_aa + correos_tipo_viaje) # Agregar destinatarios al campo "Para" |
||||
# msg['Subject'] = f"Información de factura {invoice}" |
||||
|
||||
# # Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
# message = f"<html><body>" |
||||
# message += f"<h2>Factura {invoice}</h2>" |
||||
# message += f"<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
# message += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
# message += f"</table><br>" |
||||
# message += "</body></html>" |
||||
# msg.attach(MIMEText(message, 'html')) |
||||
|
||||
# try: |
||||
# # Establecer la conexión al servidor SMTP |
||||
# server = smtplib.SMTP(smtp_server, smtp_port) |
||||
# server.starttls() |
||||
# server.login(sender_email, sender_password) |
||||
|
||||
# # Enviar el correo con los destinatarios en el campo "Para" |
||||
# server.sendmail(sender_email, correos_responsables + notificacion_aa + correos_tipo_viaje, msg.as_string()) |
||||
# print(f"Correo enviado a CorreosResponsables, NotificacionAA y CorreosTipoViaje de factura {invoice}") |
||||
|
||||
# # Cerrar la conexión SMTP |
||||
# server.quit() |
||||
# except Exception as e: |
||||
# print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
# except Exception as e: |
||||
# print("Error al conectarse:", e) |
||||
|
||||
|
||||
import smtplib |
||||
from email.mime.multipart import MIMEMultipart |
||||
from email.mime.text import MIMEText |
||||
import pyodbc |
||||
import json |
||||
import datetime |
||||
|
||||
# Cargar la información de conexión desde el archivo JSON |
||||
with open('config.json', 'r') as config_file: |
||||
config = json.load(config_file) |
||||
|
||||
# Crear una cadena de conexión usando la información del archivo JSON (en este momento esta la conexion a DB local) |
||||
conn_str = ( |
||||
f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
f"SERVER={config['server']};" |
||||
f"DATABASE={config['database']};" |
||||
f"UID={config['username']};" |
||||
f"PWD={config['password']};" |
||||
) |
||||
|
||||
# Conectar a la base de datos |
||||
conn = pyodbc.connect(conn_str) |
||||
|
||||
try: |
||||
cursor = conn.cursor() |
||||
print('Conexion exitosa ala DB. ') |
||||
fecha = '2023-10-02' # Ejemplo de fecha |
||||
cursor.execute("{CALL NotiVigenciaDoda(?)}", fecha) |
||||
|
||||
# Recuperar los resultados del procedimiento almacenado |
||||
rows = cursor.fetchall() |
||||
|
||||
factura_data = {} |
||||
|
||||
# Iterar a través de los resultados y agruparlos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in factura_data: |
||||
factura_data[invoice] = [] |
||||
factura_data[invoice].append(row) |
||||
|
||||
# Crear un diccionario para almacenar los correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje por factura |
||||
correos_por_factura = {} |
||||
|
||||
# Iterar a través de los resultados y agrupar los correos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in correos_por_factura: |
||||
correos_por_factura[invoice] = {'CorreosResponsables': [], 'NotificacionAA': [], 'CorreoTipoViaje': []} |
||||
|
||||
# Preguntar al usuario por los correos para esta factura |
||||
correos_responsables = input(f'Correos Responsables para la factura {invoice}: ').split(',') |
||||
notificacion_aa = input(f'Correos NotificacionAA para la factura {invoice}: ').split(',') |
||||
correos_tipo_viaje = input(f'Correos CorreoTipoViaje para la factura {invoice}: ').split(',') |
||||
|
||||
correos_por_factura[invoice]['CorreosResponsables'].extend(correos_responsables) |
||||
correos_por_factura[invoice]['NotificacionAA'].extend(notificacion_aa) |
||||
correos_por_factura[invoice]['CorreoTipoViaje'].extend(correos_tipo_viaje) |
||||
|
||||
# Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
with open('config.json', 'r') as email_config_file: |
||||
email_config = json.load(email_config_file) |
||||
|
||||
smtp_server = email_config['EmailServer'] |
||||
smtp_port = email_config['EmailPort'] |
||||
|
||||
# Tus credenciales de correo electrónico desde el archivo JSON |
||||
sender_email = email_config['EmailUser'] |
||||
sender_password = email_config['EmailPassword'] |
||||
|
||||
# Iterar a través de las facturas y enviar correos personalizados |
||||
for invoice, correos_en_factura in correos_por_factura.items(): |
||||
correos_responsables = correos_en_factura['CorreosResponsables'] |
||||
notificacion_aa = correos_en_factura['NotificacionAA'] |
||||
correos_tipo_viaje = correos_en_factura['CorreoTipoViaje'] |
||||
|
||||
# Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) |
||||
first_row = factura_data[invoice][0] |
||||
# fechaActual = first_row.FechaActual |
||||
caja = first_row.Caja |
||||
vigenciaDoda = first_row.VigenciaDODA |
||||
notificacion = first_row.Notificacion |
||||
|
||||
# Crear el mensaje de correo electrónico |
||||
msg = MIMEMultipart() |
||||
msg['From'] = sender_email |
||||
msg['To'] = ', '.join(correos_responsables + notificacion_aa + correos_tipo_viaje) # Agregar destinatarios al campo "Para" |
||||
msg['Subject'] = f"Notificacion Vigencia de documentos. {invoice}" |
||||
|
||||
# Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
message = f"<html><body>" |
||||
message += f"<h2>Factura {invoice}</h2>" |
||||
message += f"<table border='1'><tr><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
message += f"<tr><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
message += f"</table><br>" |
||||
message += "</body></html>" |
||||
msg.attach(MIMEText(message, 'html')) |
||||
|
||||
try: |
||||
# Establecer la conexión al servidor SMTP |
||||
server = smtplib.SMTP(smtp_server, smtp_port) |
||||
server.starttls() |
||||
server.login(sender_email, sender_password) |
||||
|
||||
# Enviar el correo con los destinatarios en el campo "Para" |
||||
server.sendmail(sender_email, correos_responsables + notificacion_aa + correos_tipo_viaje, msg.as_string()) |
||||
print(f"Correo enviado a CorreosResponsables, NotificacionAA y CorreosTipoViaje de factura {invoice}") |
||||
|
||||
# Cerrar la conexión SMTP |
||||
server.quit() |
||||
except Exception as e: |
||||
print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
except Exception as e: |
||||
print("Error al conectarse:", e) |
||||
|
||||
|
||||
|
@ -0,0 +1,18 @@ |
||||
{ |
||||
"server": "100.10.10.1", |
||||
"database": "ZINC", |
||||
"username": "admin", |
||||
"password": "DBAdmin1234$.", |
||||
"EmailUser": "noreply@gemcousa.mx", |
||||
"EmailPassword": "Mx77lf%02", |
||||
"EmailServer": "smtp.ionos.com", |
||||
"EmailPort": 587, |
||||
"ServerSIR": "192.168.100.11", |
||||
"DatabaseSIR": "SIR", |
||||
"DBUserSIR": "usersir", |
||||
"DBPasswordSIR": "S1r22$Us" |
||||
} |
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue