import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

##Colores boton email : #007BFF (AZUL),  #e84e0e (NARANJO)

#<body style="background-color: rgba(255,255,255,0) !important;">

# Template HTML del email
html_template = """
<html>
  <body style="margin: 0; padding: 0; background-color: #f0f8ff;">
    <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" style="border-collapse: collapse;">
      <tr>
        <td align="center" valign="middle">
          <table role="presentation" cellpadding="0" cellspacing="0" width="600" style="background-color: #ffffff; border-collapse: collapse;">
            <tr>
              <td style="padding: 0;">
                <img src="cid:banner_image" alt="Banner" width="600" style="display: block;" />
              </td>
            </tr>
            <tr>
              <td style="padding: 20px; font-family: Arial, sans-serif; color: #333333;">
                <p style="font-size: 18px; margin: 0;">Estimado(a) <strong>{username}</strong>,</p>
                <br />
                <p style="margin: 0;">Recibimos una solicitud para restablecer tu contraseña.</p>
                <br />
                <p style="margin: 0;">Haz clic en el siguiente botón o enlace para cambiar tu contraseña:</p>
                <br />
                <!-- Botón con bordes redondeados compatible con todos los clientes -->
                <table role="presentation" border="0" cellpadding="0" cellspacing="0" align="center">
                  <tr>
                    <td align="center" bgcolor="#e84e0e" style="border-radius: 5px;">
                      <a href="{reset_link}" target="_blank" style="
                        font-family: Arial, sans-serif;
                        font-size: 16px;
                        color: #ffffff;
                        text-decoration: none;
                        padding: 12px 24px;
                        display: inline-block;
                        border-radius: 5px;">
                        Cambiar contraseña
                      </a>
                    </td>
                  </tr>
                </table>
                <br />
                <p style="margin: 0;">O copia y pega este enlace en tu navegador:</p>
                <p style="margin: 0; word-break: break-all;"><a href="{reset_link}" style="color: #e84e0e;">{reset_link}</a></p>
                <br />
                <p style="color: #888888; font-size: 12px; margin: 0;">Este enlace expirará en 1 hora.</p>
                <br /><br />
                <p style="margin: 0;">Gracias,<br /><strong>Equipo de Soporte ITG Chile S.A</strong></p>
              </td>
            </tr>
            <tr>
              <td style="text-align: center; padding: 20px 0; font-size: 12px; color: #888888;">
                ITG Chile S.A &copy; 2005 - 2025. Todos los derechos reservados.
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
  </body>
</html>
"""

# def send_automatic_email(centro, alertas, dest):
def send_automatic_email(username, dest, reset_link):


    print(username)
    print(dest)

    try:
        # Configuración del servidor SMTP
        smtp_server = 'mail.itgchile.com'
        smtp_port = 465
        smtp_user = 'noresponder@itgchile.com'
        smtp_pass = '=kiPyNu1r3@n'


        # Crear el objeto del mensaje
        msg = MIMEMultipart('mixed')
        msg['Subject'] = f'[ITG Service Manager] Reestablecer contraseña de usuario {username}'
        msg['From'] = smtp_user
        msg['To'] = dest

        # Crear contenedor 'related' para HTML + imágenes embebidas
        msg_related = MIMEMultipart('related')
        
        # Crear contenedor 'alternative' para HTML vs texto plano (opcional)
        msg_alternative = MIMEMultipart('alternative')

        # Personaliza HTML
        html = html_template.replace("{username}", username).replace("{reset_link}", reset_link)

        # Agregar HTML al contenedor 'alternative'
        msg_alternative.attach(MIMEText(html, 'html'))

        # Adjuntar 'alternative' dentro de 'related'
        msg_related.attach(msg_alternative)

        # print(msg)
        # Cargar y adjuntar la imagen PNG
        img_path= get_absolute_file_path()
        # with open('banner_itg.png', 'rb') as img:
        with open(img_path, 'rb') as f:
          img_data = f.read()
          mime_img = MIMEImage(img_data)
          mime_img.add_header('Content-ID', '<banner_image>')  # Referencia para cid
          mime_img.add_header('Content-Disposition', 'inline', filename='banner_itg.png')
          msg_related.attach(mime_img)

        # Adjuntar 'related' al mensaje principal
        msg.attach(msg_related)

        # Establecer la conexión al servidor SMTP
        server = smtplib.SMTP_SSL(smtp_server, smtp_port)

        # Iniciar sesión en el servidor SMTP
        server.login(smtp_user, smtp_pass)

        # Enviar el correo electrónico
        server.send_message(msg)

        # Cerrar la conexión SMTP
        server.quit()
        print(f"Correo de moficiación de contraseña enviado al email {dest} del usuario {username}")
    except Exception as e:
        print(f"Error al enviar el correo: {e} \n {e.__traceback__.tb_lineno}")

def get_absolute_file_path():
    # 1) Obtén la carpeta donde está este script
  base_dir = os.path.dirname(os.path.abspath(__file__))

  # 2) Construye la ruta absoluta al PNG
  img_path = os.path.join(base_dir, 'banner_itg.png')

  return img_path
# send_automatic_email("ricardo.mardones@sansano.usm.cl")
## etoledo , salarcon ,   
## salarcon@itgchile.com,  tolemerk@gmail.com,   salarccon2002@gmail.com"


#Ejemplo de uso
# send_automatic_email("salarcon", "salarccon2002@gmail.com", "https://www.itgchile.com/en/home-english/")