From 32abb88fae3808ea52b6fc1af7129fffe305048f Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 13 Feb 2025 11:54:17 +0100 Subject: [PATCH] Limitar archivos a 1 --- __pycache__/controlador.cpython-313.pyc | Bin 3032 -> 3032 bytes __pycache__/modelo.cpython-313.pyc | Bin 8586 -> 8652 bytes __pycache__/vista.cpython-313.pyc | Bin 17286 -> 17175 bytes modelo.py | 18 +++++++++--------- vista.py | 12 ++++++------ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/__pycache__/controlador.cpython-313.pyc b/__pycache__/controlador.cpython-313.pyc index b21b685e91f3c3b047f35d0ba74d0bd76272828c..2ac4385dd7d46fc5a99fb7ad9a75cb17f944b775 100644 GIT binary patch delta 19 Zcmca1enXt=GcPX}0}!;G+sJi}8vs1V1?T_( delta 19 Zcmca1enXt=GcPX}0}x0a-pF;18vr^21#kcW diff --git a/__pycache__/modelo.cpython-313.pyc b/__pycache__/modelo.cpython-313.pyc index 20fd2c9ed4ecb5bddc8635edbdba8f7e7755a9a8..6e3cda65297cbecc97bfc1db7fcfa650852e3555 100644 GIT binary patch delta 1065 zcmZWo|4S2L7=LfKyPdah>fCO-Id`*(n_A|VWtpCCOHqFix|ccSKp6QobhD`uQ4~Q? z5tY7z2t`J}_=`V;|3MP^L*Ryn76ttQ(Jx9t5%s>Cr%?~w^L(Dq^W}ZsyXPK6-$u>* zW-|}4uv@F6ldsH8cAmo?ji3F8sMju6GbBnRMu(_8g1Y7f020_6rByc10ibYb(e7z8 zYW}f>daW|4SIrt9Is{2Z)hM7?P{MAz#XzPKbNvitbJh+GIokm_Vq=U_bX0N#RGS84 zI#>|Wuv^vF+M<$IRcAhJfj|!InP~BQI#zLcZj1D9X zsz-}J6Etg)B!_-G9Qv3+@uAP0h&+PPSgs{1epJJiwcz16h1~2Pffi`}f4skwlpuLw z6pLO6E~+SpIkY8+CbddSQ)2rjzTeMEcwx2}g{N{RHPvGJ=ZDKT_;HaU|*UtL}%O?Cj8#oLsG9*GWpn7A*+_mmOc zbVpFu?bnlSML*o_)H*s}>MgVuXKem$YsCt+Z4K@T5j0R5tv6X8_uTJUxVCIq5w?Z8 z9aH@`78LsS#OjrBRy_5@@X=;pY?^CYl;`B-%3WJk7HySAn=*mcOt^0+KCl}f%*F?I zxoUnMl%ZYE ziH-=K@{ZUQ0MD#gtw#J3OxkTy}DN;=nQjy=j(UwId|q`@vl^(#QXNejh+Q}+%Jj5vy*ps40rpRWe3etF$BEi54O$qHn3djVwOQ7l32zP zP0ItAMK%H%UNkC>a?C<9QvSaTtuiXmUU5IjZS;2Ot9(mR$oFHCPRVa3J8r7XvarP4KrM@{%bT^>jOd zG?t7AJ`)IX%D#@`Z$d5{&xO6JAO9fCR>|dw(SM4_KCh9sP{M%R$YX*BP#(UmmUnh= zUDE*P>>=pqN+I2JzyNSUhJ1EQM)}BV%5=S`ZPXSbD_HV*xjcvcTz`&RU4Xx+RV7iv z&(;&QZR;7%Hc&4@J$_^`GhpG%+WljpEdBepJ>!|df!<8^+V$aVwr?2kXrIVdABq#+ z{GmQ;G;^zuWQIlt`^JW`qF3+=A%$^FZ{=R&aXo~e>xoEN^}M>O=vzwObmvs(?48x{ zsh5@OMQ1mZ#$5sQx`)osKL1>NCO+3Z(>!0f>8n}CS}@tNrPptjL|!G9Iu<%Mqit)^ zwl`PSqg|_!?p6KL9&cB*?=DdFXVPP7KDrU8`soF&ZcVM-;YriI0Gmx}=io}OEq9PdFpDLl0z>*_0b%X>U{)xPL6gm|N-j7xCp9@aGe0k} zNTD=OA+abqBeN`DAu%PZG_NFIld;GUXls?ABdWNSLQyVAT+AL1F51J zlbLn3qQimA28KIAGS`K4E(z&eFb=*b6w<+dk6Y-5n(l(g4woxDN;h}}uJg!WXd~cilW+SDs0HD#!uM>8T~RSc^-FG7E~P zfh?as`KrDuFjiE-^@0drB_jX)7iwxSY{ z#J0&s<{G@)K_ZYaDcZF;-Q1Fe@$}|});WxfmnZYtzT{nmB)@Jmi`^|opsViNmy50d znXwW?bb$yK5V3l5wu3SwH`qI1(W#SXIx2~R!oSD`M3{pJeGoBy@&(5fl^G!BED%u$ zB94HFKoD^nL|g_DcP2+Tr7^Ryx=lXll%{zSByzAR-Jzfa32KhfQvNN@-52 LUD2z_0nTOsdzR6r delta 816 zcmZ9JUr19?9LMjuyPG!eHREPIO>d@~Q*)WR(44X%)JsI+X2Hfq!XAZ)sFw&II=|&0JP)7y{e8bb?m546=BCl~ zWhDF(1Up05&o@g^?WyqIh5i_M*98l^$q?kICF6}^T_3}ovO*KALDY`66ce-jQw$Tb z5Q*JQc8PoJ#aLsB+|sy{8)VCwRyJhqKoS#Wz?-raD|bo%q$8xnlyF#0Xfl>$93D~6 zCz6sJ8BJ+=BI!oBg>GUZ`=sdK9(LMsoQC)sg}VgXps_+uo=uD?+OQf^G&!y$O)jP; zb=(FaH=0m2+;s!AEu5fDQMUyLp)4(KZI&0+8C{v6M}Q$ENx~ue#c8tC)G(z{d68KY z9XYXiRcy|*4`ju`nbI$1;#!^iLH*s+Grgbrn!ID*;!t|%mY#F@vM%2zNB2yBp0CL9 z)mgqe$2+sUGt(S+-JJ;pGfklk?_A{v*0<$NM+^Qje3EV%-nw~`K3HxXKftkjXQ^vi zqKa->>5S?ao`XZqlMzoHS|C?FKD1zb@T4s05ec-qsvgobRYCD%k=&PpN?g?yO;pQjx2U<2>1TW4dc4cMD$!^J>!*2@Q=rUD*z6#Y;5-IM`eY9 z3hpdv@Yhtr+u>foVSooPPh@|jHVtwCa1QVea00Lb$N|>LhJV;nV(lZrz_9xxSb4w> az&8L~bK#}U(yn+Sl8Pza_&fO;@cspSC+ao; diff --git a/modelo.py b/modelo.py index 7425b2f..79b8e29 100644 --- a/modelo.py +++ b/modelo.py @@ -123,6 +123,9 @@ class CorreoModelo: try: if not CorreoModelo.validar_correo(destinatario): return False, "Dirección de correo inválida" + + if len(archivos_adjuntos) > 1: + return False, "Solo se permite un archivo adjunto" fecha_envio = datetime.now().strftime("%Y-%m-%d %H:%M:%S") @@ -132,20 +135,17 @@ class CorreoModelo: msg["Subject"] = asunto msg["Date"] = fecha_envio - mensaje_completo = f"{mensaje}" - msg.attach(MIMEText(mensaje_completo, "plain")) + msg.attach(MIMEText(mensaje, "plain")) - # Agregar archivos adjuntos - for archivo in archivos_adjuntos: + # Adjuntar el único archivo permitido + if archivos_adjuntos: + archivo = archivos_adjuntos[0] if os.path.exists(archivo): with open(archivo, "rb") as adjunto: part = MIMEBase("application", "octet-stream") part.set_payload(adjunto.read()) encoders.encode_base64(part) - part.add_header( - "Content-Disposition", - f"attachment; filename={os.path.basename(archivo)}", - ) + part.add_header("Content-Disposition", f"attachment; filename={os.path.basename(archivo)}") msg.attach(part) server = smtplib.SMTP(CorreoModelo.SMTP_SERVER, CorreoModelo.SMTP_PORT) @@ -158,7 +158,7 @@ class CorreoModelo: except Exception as e: return False, f"Error enviando correo: {e}" - + @staticmethod def validar_correo(destinatario): patron = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$" diff --git a/vista.py b/vista.py index 08f2fb1..60daeb4 100644 --- a/vista.py +++ b/vista.py @@ -140,13 +140,13 @@ class CorreoVista: btn_enviar.pack(pady=10) def seleccionar_archivos(self): - archivos = filedialog.askopenfilenames(title="Seleccionar archivos adjuntos") - if archivos: - self.archivos_adjuntos = list(archivos) - archivos_texto = "\n".join(self.archivos_adjuntos) - self.label_archivos.config(text=f"Archivos adjuntos:\n{archivos_texto}") + archivo = filedialog.askopenfilename(title="Seleccionar un archivo adjunto") # Permitir solo un archivo + if archivo: + self.archivos_adjuntos = [archivo] # Solo un archivo en la lista + self.label_archivos.config(text=f"Archivo adjunto: {archivo}") else: - self.label_archivos.config(text="No hay archivos adjuntos") + self.label_archivos.config(text="No hay archivo adjunto") + def enviar_correo(self): destinatario = self.entry_destinatario.get().strip()