ó
    ã*ÂjFB  ã                   óz  • S r SSKrSSKrSSKrSSKJr  SSKJrJr  SSKJ	r	J
r
JrJr  SSKrSSKJrJrJrJr  SSKJr  SSKJrJr  S	rS
rSrSrSrSrSrSr\\\\\\\\/r Sr!Sr"Sr#S\$S\$4S jr%\ " S S5      5       r&S\'S\'4S jr(S2S\&4S jjr)\RT                  " S5      r+\RT                  " S5      r,\RT                  " S5      r-\RT                  " S5      r.S \	\$\$4   S\\	\$\$4   \
\$   4   4S! jr/S"\$S\$S#\0S$\\'   S\04
S% jr1\S&\S'\S(\S)\S*\S+\S,\S-0r2S.\	\$\$4   S$\\'   S\
\$   4S/ jr3S2S0\\&   SS4S1 jjr4g)3uÐ  Az e-mail kÃ¼ldÃ©s (SMTP) beÃ¡llÃ­tÃ¡sainak kÃ¶zponti kezelÃ©se: betÃ¶ltÃ©s, ellenÅ‘rzÃ©s, mentÃ©s, kÃ¼ldÃ©s.

TÃ–RTÃ‰NET / MIÃ‰RT KÃ‰SZÃœLT (2026-10-04)
    KorÃ¡bban az SMTP-adatok (szerver, port, felhasznÃ¡lÃ³, jelszÃ³) KIZÃ�RÃ“LAG a .env fÃ¡jlbÃ³l jÃ¶ttek
    (config.py), Ã©s az alkalmazÃ¡s indÃ­tÃ¡sakor egyszer tÃ¶ltÅ‘dtek be - egy mÃ³dosÃ­tÃ¡shoz szerver-
    hozzÃ¡fÃ©rÃ©s Ã©s ÃºjraindÃ­tÃ¡s kellett. Az Ãºj igÃ©ny: a rendszeradmin az alkalmazÃ¡s felÃ¼letÃ©rÅ‘l
    (/rendszeradmin/email-beallitasok) tudja Ã¡llÃ­tani ezeket. Ez a modul az egyetlen hely, ami
    az SMTP-adatokat tudja, minden mÃ¡s (email_utils.py, a rendszeradmin oldal) ezen keresztÃ¼l Ã©ri el.

AZ ADATOK FORRÃ�SA (prioritÃ¡s)
    1. ADATBÃ�ZIS (rendszer_beallitasok tÃ¡bla, models.RendszerBeallitas) - ha ott van elmentett
       "smtp_server". Az SMTP-jelszÃ³ titkosÃ­tva van tÃ¡rolva (titkosito_utils.py).
    2. .ENV TARTALÃ‰K (config.SMTP_*) - ha az adatbÃ¡zisban mÃ©g nincs SMTP-szerver. Ã�gy a bevezetÃ©s
       utÃ¡n a levÃ©lkÃ¼ldÃ©s mindaddig a rÃ©gi mÃ³don mÅ±kÃ¶dik tovÃ¡bb, amÃ­g a rendszeradmin el nem menti
       az elsÅ‘ beÃ¡llÃ­tÃ¡st a felÃ¼leten (vagy le nem futtatja a migracio_smtp_env_to_db.py-t).
    3. Egyik sem: "szimulÃ¡ciÃ³s mÃ³d" - a levelek nem mennek ki, a szerver konzoljÃ¡ra Ã­rÃ³dnak ki
       (ez a korÃ¡bbi viselkedÃ©s, fejlesztÃ©shez hasznos).
    Az adatbÃ¡zis Ã©s a .env Ã©rtÃ©kei SOSEM keverednek: vagy az egyik, vagy a mÃ¡sik teljes kÃ©szlete Ã©l.

MIÃ‰RT NINCS GYORSÃ�TÃ“TÃ�R (cache)?
    Az Ã©les szerver gunicorn-nal 3 worker-folyamattal fut (server_tune/emelog.service). Egy
    folyamaton belÃ¼li cache-t a mÃ¡sik 2 folyamat nem lÃ¡tnÃ¡, Ã­gy egy mentÃ©s utÃ¡n akÃ¡r percekig
    a rÃ©gi beÃ¡llÃ­tÃ¡ssal mennÃ©nek ki a levelek. LevÃ©lkÃ¼ldÃ©s ritka mÅ±velet (riasztÃ¡s, napi riport),
    ezÃ©rt inkÃ¡bb minden kÃ¼ldÃ©snÃ©l Ãºjraolvassuk a DB-bÅ‘l - egyszerÅ± Ã©s mindig friss.

MIT NE TEGYÃ‰L?
    - A jelszÃ³t ne Ã­rd ki sehovÃ¡ (print, hiba, sablon). A beÃ¡llÃ­tÃ¡s-oldal sem jelenÃ­ti meg - csak
      azt, hogy "meg van adva".
    - Ne hÃ­vj kÃ¶zvetlenÃ¼l smtplib-et mÃ¡shonnan: hasznÃ¡ld a kuld() fÃ¼ggvÃ©nyt, hogy a
      idÅ‘tÃºllÃ©pÃ©s Ã©s a TLS-ellenÅ‘rzÃ©s egysÃ©ges maradjon.

RÃ©szletes leÃ­rÃ¡s: docs/EMAIL_RENDSZER.md
é    N)Ú	dataclass)ÚdatetimeÚtimezone)ÚDictÚListÚOptionalÚTuple)ÚSMTP_SERVERÚ	SMTP_PORTÚ	SMTP_USERÚSMTP_PASSWORD)ÚSessionLocal)ÚtitkositÚ
visszafejtÚsmtp_serverÚ	smtp_portÚsmtp_felhasznaloÚsmtp_jelszoÚsmtp_biztonsagÚsmtp_felado_cimÚsmtp_tls_ellenorzesÚalkalmazas_url)ÚSSLÚSTARTTLSé   zhttp://localhost:8000ÚertekÚreturnc                 óX   • [        U 5      R                  SS5      R                  SS5      $ )u_   CR/LF-mentesÃ­tÃ©s (CRLF-fejlÃ©c-injekciÃ³ ellen) - ugyanaz az elv, mint az email_utils.py-ban.ÚÚ Ú
)ÚstrÚreplace)r   s    Ú%/var/www/website/email_beallitasok.pyÚ_fejresz_tisztitasr%   G   s&   € äˆu‹:×Ñ˜d BÓ'×/Ñ/°°bÓ9Ð9ó    c                   ó
  • \ rS rSr% SrSr\\S'   Sr\	\S'   Sr
\\S'   Sr\\S'   S	r\\S
'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   \S\4S j5       r\S\4S j5       r\S\4S j5       rSrg)ÚEmailBeallitasokéL   uK   Az aktuÃ¡lisan Ã©rvÃ©nyes (feloldott) e-mail beÃ¡llÃ­tÃ¡sok egy pÃ©ldÃ¡nya.r    ÚszerveréÑ  ÚportÚfelhasznaloÚjelszor   Ú	biztonsagÚ
felado_cimTÚtls_ellenorzesr   ÚnincsÚforrasÚjelszo_visszafejthetoFÚjelszo_megadvaÚbetoltesi_hibar   c                 óR   • [        U R                  =(       a    U R                  5      $ )u‘   Igaz, ha van annyi adat, hogy Ã©rdemes kÃ¼ldeni (a korÃ¡bbi feltÃ©tellel azonos: szerver Ã‰S
felhasznÃ¡lÃ³ megadva). Hamis -> szimulÃ¡ciÃ³s mÃ³d.)Úboolr*   r-   ©Úselfs    r$   ÚkonfiguraltÚEmailBeallitasok.konfiguralt`   s   € ô �D—L‘L×5 T×%5Ñ%5Ó6Ð6r&   c                 ó^   • [        U R                  =(       d    U R                  5      nSU S3$ )uª   A 'From:' fejlÃ©c Ã©rtÃ©ke. A feladÃ³ cÃ­me a kÃ¼lÃ¶n megadott feladÃ³-cÃ­m, ennek hiÃ¡nyÃ¡ban a
belÃ©pÃ©si felhasznÃ¡lÃ³nÃ©v (a korÃ¡bbi viselkedÃ©s). CR/LF-mentesÃ­tve.zEmeLOG Rendszer <Ú>)r%   r0   r-   )r:   Úcims     r$   Úfelado_fejlecÚEmailBeallitasok.felado_fejlecf   s,   € ô ! §¡×!D°D×4DÑ4DÓEˆØ" 3 % qÐ)Ð)r&   c                 óR   • U R                   =(       d    [        R                  S5      $ )uZ   A levelekbe kerÃ¼lÅ‘ linkek alapja, zÃ¡rÃ³ '/' nÃ©lkÃ¼l; ha nincs beÃ¡llÃ­tva, helyi cÃ­m.Ú/)r   ÚALAP_ALKALMAZAS_URLÚrstripr9   s    r$   Úalkalmazas_url_vagy_alapÚ)EmailBeallitasok.alkalmazas_url_vagy_alapm   s!   € ð ×#Ñ#×:Ô':×BÑBÀ3ÓGÐGr&   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r*   r"   Ú__annotations__r,   Úintr-   r.   r/   r0   r1   r8   r   r3   r4   r5   r6   Úpropertyr;   r@   rF   Ú__static_attributes__rH   r&   r$   r(   r(   L   sÏ   ‡ áUØ€GˆSÓØ€Dˆ#ƒOØ€K�ÓØ€FˆCÓØ€IˆsÓØ€J�ÓØ€N�DÓØ€N�CÓà€FˆCÓà"&Ð˜4Ó&à €N�DÓ à€N�CÓàð7˜Tó 7ó ð7ð
 ð*˜só *ó ð*ð ðH¨#ó Hó óHr&   r(   Úalapc                 óJ   •  [        U 5      $ ! [        [        4 a    Us $ f = f©N)rO   Ú	TypeErrorÚ
ValueError)r   rR   s     r$   Ú	_int_vagyrW   s   s*   € ðÜ�5‹zÐøÜ”zÐ"ó ØŠðús   ‚
 �"¡"c                 ó¤  ^
• U SL n0 m
SnU(       a
  [        5       n  U R                  [        R                  5      R	                  [        R                  R
                  R                  [        5      5      R                  5       nU Vs0 s H.  oDR
                  UR                  [        UR                  5      4_M0     snm
U(       a  U R!                  5         S["        S["        4U
4S jjn[%        U" [&        5      US9nU" [(        5      (       aý  S	Ul        U" [(        5      Ul        [/        U" [0        5      S
5      Ul        U" [4        5      Ul        U" [8        5      [:        ;   a  U" [8        5      OSUl        U" [>        5      Ul         U" [B        5      S:g  Ul"        T
RG                  [H        5      nU(       aO  US   (       aE  SUl%        US   (       a*  [M        US   5      n	U	c  SUl'        SUl(        U$ X—l'         U$ US   Ul'        U$ [R        (       aU  SUl        [R        Ul        [T        Ul        [V        Ul        [X        Ul'        [        [X        5      Ul%        SUl        SUl"        U$ s  snf ! [         a5  n[        U5      R                   SU 3n[        SU 35        0 m
 SnAGNîSnAff = f! U(       a  U R!                  5         f f = f)u  Ã–sszeÃ¡llÃ­tja az aktuÃ¡lis beÃ¡llÃ­tÃ¡sokat (DB -> .env tartalÃ©k -> nincs).

db: egy meglÃ©vÅ‘ SQLAlchemy session (a rendszeradmin oldal ezt adja Ã¡t). Ha None, a fÃ¼ggvÃ©ny
SAJÃ�T, rÃ¶vid Ã©letÅ± sessiont nyit - ez kell a hÃ¡ttÃ©rfeladatoknak Ã©s az Ã¼temezett jobnak
(azoknak nincs kÃ©rÃ©s-kontextusukhoz kÃ¶tÃ¶tt session-jÃ¼k).

A fÃ¼ggvÃ©ny SOSEM dob kivÃ©telt: ha az adatbÃ¡zis nem olvashatÃ³ (pl. a tÃ¡bla mÃ©g nem lÃ©tezik egy
frissen frissÃ­tett, de mÃ©g nem ÃºjraindÃ­tott szerveren), a .env tartalÃ©kra esik vissza.
Nr    z: uW   â�Œ Hiba az e-mail beÃ¡llÃ­tÃ¡sok DB-bÅ‘l olvasÃ¡sakor (.env tartalÃ©k hasznÃ¡latban): Úkulcsr   c                 óp   >• TR                  U 5      nU(       a  US   =(       d    SR                  5       $ S$ )Nr   r    )ÚgetÚstrip)rY   ÚvÚertekeks     €r$   r   Úbetolt.<locals>.ertek—   s/   ø€ Ø�K‰K˜ÓˆÞ'(��!‘—
˜×!Ñ!Ó#Ð0¨bÐ0r&   )r   r6   Ú	adatbazisr+   r   Ú0r   Té   FÚenv)-r   ÚqueryÚmodelsÚRendszerBeallitasÚfilterrY   Úin_ÚBEALLITAS_KULCSOKÚallr   r8   ÚtitkositottÚ	ExceptionÚtyperI   ÚprintÚcloser"   r(   ÚKULCS_ALKALMAZAS_URLÚKULCS_SZERVERr3   r*   rW   Ú
KULCS_PORTr,   ÚKULCS_FELHASZNALOr-   ÚKULCS_BIZTONSAGÚBIZTONSAG_ERTEKEKr/   ÚKULCS_FELADO_CIMr0   ÚKULCS_TLS_ELLENORZESr1   r[   ÚKULCS_JELSZOr5   r   r.   r4   r
   r   r   r   )ÚdbÚsajat_sessionÚhibaÚsorokÚsÚer   ÚbÚ
jelszo_sorÚ	feloldottr^   s             @r$   Úbetoltr‚   z   sh  ø€ ð ˜$�J€MØ57€GØ€DÞÜ‹^ˆðØ—‘œ×1Ñ1Ó2×9Ñ9Ü×$Ñ$×*Ñ*×.Ñ.Ô/@ÓAó
ç
‰#‹%ð 	ñ EJÓJÂE¸q—7‘7˜QŸW™W¤d¨1¯=©=Ó&9Ð:Ò:ÁEÑJˆö Ø�H‰HŒJð1”Sð 1œS÷ 1ô 	©Ô.BÓ(CÐTXÑY€AáŒ]×ÑàˆŒÙœ-Ó(ˆŒ	Ü™5¤Ó,¨cÓ2ˆŒÙÔ/Ó0ˆŒÙ05´oÓ0FÔJ[Ó0[‘eœOÔ,ÐafˆŒÙÔ-Ó.ˆŒá Ô!5Ó6¸#Ñ=ˆÔà—[‘[¤Ó.ˆ
Þ˜* QŸ-Ø#ˆAÔØ˜!�}Ü& z°!¡}Ó5�	ØÑ$Ø!�A”HØ.3�AÔ+ð" €Hð  )•Hð €Hð & a™=�”ð €H÷ 
ŠàˆŒÜˆŒ	ÜˆŒÜ!ˆŒÜ ˆŒÜ¤Ó.ˆÔØˆŒØ ˆÔð €Hùòe KøÜó Ü�q“'×"Ñ"Ð# 2 a SÐ)ˆÜÐgÐhlÐgmÐnÔoØŽûðûö
 Ø�H‰H�Jð ús<   œA+I3 Â5I.Â<I3 É.I3 É3
J2É=*J-Ê'J5 Ê-J2Ê2J5 Ê5Kz$^[A-Za-z0-9]([A-Za-z0-9.\-]{0,253})$z/^[^@\s<>\"'\\]+@[^@\s<>\"'\\]+\.[^@\s<>\"'\\]+$z^https?://[^\s<>\"']+$z[\x00-\x1f\x7f]Únyersc                 óf  • / n0 nU R                  S5      =(       d    SR                  5       nU(       a+  [        R                  U5      (       d  UR	                  S5        X2S'   U R                  S5      =(       d    SR                  5       n U(       a  [        U5      OSnSUs=::  a  S::  d   [        e  [        e [        U5      US'   U R                  S	5      =(       d    SR                  5       n[        U5      S
:”  d  [        R                  U5      (       a  UR	                  S5        XbS	'   U R                  S5      =(       d    Sn[        U5      S:”  d  [        R                  U5      (       a  UR	                  S5        XrS'   U R                  S5      =(       d    SR                  5       R                  5       nU[        ;  a  UR	                  S5        SnX‚S'   U R                  S5      =(       d    SR                  5       n	U	(       a:  [        U	5      S
:”  d  [        R                  U	5      (       d  UR	                  S5        X’S'   U R                  S5      =(       d    SS:X  a  SOSUS'   U R                  S5      =(       d    SR                  5       R                  S5      n
U
(       a:  [        U
5      S
:”  d  [        R                  U
5      (       d  UR	                  S5        X¢S'   U(       a  U(       d  UR	                  S5        X!4$ ! [         a    UR	                  S5        Sn GNsf = f)uD  MegtisztÃ­tja Ã©s ellenÅ‘rzi a bekÃ¼ldÃ¶tt Å±rlap-Ã©rtÃ©keket.

VisszatÃ©rÃ©s: (tiszta_ertekek, hibauzenetek). Ha a hibalista nem Ã¼res, NEM szabad menteni.
A bemeneti kulcsok: szerver, port, felhasznalo, jelszo, biztonsag, felado_cim,
tls_ellenorzes ("1"/"0"), alkalmazas_url. A 'jelszo' Ã¼res szÃ¶vege = "ne mÃ³dosÃ­tsd".
r*   r    uj   Az SMTP-szerver neve Ã©rvÃ©nytelen (csak betÅ±, szÃ¡m, pont Ã©s kÃ¶tÅ‘jel lehet benne, szÃ³kÃ¶z nÃ©lkÃ¼l).r,   r+   rb   iÿÿ  u6   A port 1 Ã©s 65535 kÃ¶zÃ¶tti egÃ©sz szÃ¡m kell legyen.r-   éÿ   uN   A felhasznÃ¡lÃ³nÃ©v tÃºl hosszÃº vagy tiltott (vezÃ©rlÅ‘) karaktert tartalmaz.r.   iô  uT   A jelszÃ³ tÃºl hosszÃº vagy tiltott (vezÃ©rlÅ‘, pl. sortÃ¶rÃ©s) karaktert tartalmaz.r/   r   u4   A titkosÃ­tÃ¡s tÃ­pusa csak SSL vagy STARTTLS lehet.r0   u*   A feladÃ³-cÃ­m nem Ã©rvÃ©nyes e-mail cÃ­m.r1   Ú1ra   r   rC   un   Az alkalmazÃ¡s URL-je http:// vagy https:// kezdetÅ±, szÃ³kÃ¶zmentes cÃ­m kell legyen (pl. https://emelog.hu).u@   Ha megadsz SMTP-szervert, a felhasznÃ¡lÃ³nevet is meg kell adni.)r[   r\   Ú_SZERVER_MINTAÚmatchÚappendrO   rV   r"   ÚlenÚ_VEZERLOKARAKTERÚsearchÚupperru   Ú_EMAIL_MINTArE   Ú
_URL_MINTA)rƒ   ÚhibakÚtr*   Úport_szovegr,   r-   r.   r/   ÚfeladoÚurls              r$   Ú	ellenorizr•   Ì   s¤  € ð €EØ€Aà�y‰y˜Ó#×) r×0Ñ0Ó2€GÞ”~×+Ñ+¨G×4Ñ4Ø�‰ð  Bô  	CØ€i�Là—9‘9˜VÓ$×*¨×1Ñ1Ó3€KðÞ#.Œs�;Ô°CˆØ�TÕ"˜UÔ"ÜÐð #ÜÐð #ô
 �D“	€A€f�Ià—9‘9˜]Ó+×1¨r×8Ñ8Ó:€KÜ
ˆ;Ó˜#ÓÔ!1×!8Ñ!8¸×!EÑ!EØ�‰ÐeÔfØ"€mÑà�Y‰Y�xÓ ×& B€FÜ
ˆ6ƒ{�SÓÔ,×3Ñ3°F×;Ñ;Ø�‰ÐkÔlØ€h�Kà—‘˜;Ó'×0¨5×7Ñ7Ó9×?Ñ?ÓA€IØÔ)Ó)Ø�‰ÐKÔLØˆ	Ø€k�Nà�i‰i˜Ó%×+¨×2Ñ2Ó4€FÞ”3�v“; Ó$¬L×,>Ñ,>¸v×,FÑ,FØ�‰ÐAÔBØ€l�Oà"'§)¡)Ð,<Ó"=×"DÀÈÓ!L™#ÐRU€AÐÑà�9‰9Ð%Ó&×,¨"×
3Ñ
3Ó
5×
<Ñ
<¸SÓ
A€CÞ
”�C“˜3“¤j×&6Ñ&6°s×&;Ñ&;Ø�‰ð  Fô  	GØÐÑö –{Ø�‰ÐWÔXàˆ8€OøôK ó Ø�‰ÐMÔNØ‹ðús   Â/L ÌL0Ì/L0rY   rk   Úuser_idc           
      ó&  • U R                  [        R                  5      R                  [        R                  R                  U:H  5      R                  5       nUcI  U R                  [        R                  " XU[        R                  " [        R                  5      US95        gUR                  =(       d    SU:X  a  [        UR                  5      U:X  a  gX%l        X5l        [        R                  " [        R                  5      Ul        XEl        g)u[   Egy kulcs beszÃºrÃ¡sa/frissÃ­tÃ©se. Igazzal tÃ©r vissza, ha tÃ©nyleg vÃ¡ltozott az Ã©rtÃ©k.)rY   r   rk   Úmodositva_atÚmodosito_user_idTr    F)rd   re   rf   rg   rY   ÚfirstÚaddr   Únowr   Úutcr   r8   rk   r˜   r™   )ry   rY   r   rk   r–   Úsors         r$   Ú_upsertrŸ     sÁ   € à
�(‰(”6×+Ñ+Ó
,×
3Ñ
3´F×4LÑ4L×4RÑ4RÐV[Ñ4[Ó
\×
bÑ
bÓ
d€CØ
�{Ø
�‰Œv×'Ò'Ø°+Ü!Ÿš¤h§l¡lÓ3Àgñ
ô 	ð Ø�	‰	��R˜EÓ!¤d¨3¯?©?Ó&;¸{Ó&JØØ„IØ!„OÜ—|’|¤H§L¡LÓ1€CÔØ"ÔØr&   zSMTP-szerverr,   u   felhasznÃ¡lÃ³nÃ©vu   jelszÃ³u   titkosÃ­tÃ¡s tÃ­pusau   feladÃ³-cÃ­mu    TLS-tanÃºsÃ­tvÃ¡ny ellenÅ‘rzÃ©seu   alkalmazÃ¡s URLÚtisztac                 ó`  ^ ^^• / mSU UU4S jjnU" [         US   5        U" [        US   5        U" [        US   5        U" [        US   5        U" [        US   5        U" [
        US   5        U" [        US   5        UR                  S	5      (       a  U" [        [        US	   5      S
S9  T$ )u5  Elmenti az ellenÅ‘rzÃ¶tt Ã©rtÃ©keket. NEM commitol - a hÃ­vÃ³ (a router) az AuditLog-bejegyzÃ©ssel
egyÃ¼tt, EGY tranzakciÃ³ban commitolja.

A jelszÃ³ csak akkor Ã­rÃ³dik felÃ¼l, ha a 'jelszo' mezÅ‘ nem Ã¼res (Ã¼res = vÃ¡ltozatlan).
VisszatÃ©rÃ©s: a tÃ©nylegesen mÃ³dosult mezÅ‘k emberi nevei (naplÃ³zÃ¡shoz).
c                 ó^   >• [        TXUT5      (       a  TR                  [        U    5        g g rT   )rŸ   r‰   Ú_MEZO_CIMKEK)rY   r   rk   ry   r–   Ú	valtozotts      €€€r$   ÚmentesÚment.<locals>.mentes3  s,   ø€ Ü�2�u [°'×:Ñ:Ø×Ñœ\¨%Ñ0Õ1ð ;r&   r*   r,   r-   r/   r0   r1   r   r.   T)rk   )F)
rq   rr   rs   rt   rv   rw   rp   r[   rx   r   )ry   r    r–   r¥   r¤   s   ` ` @r$   Úmentr§   *  s±   ú€ ð €I÷2ñ 2ñ Œ=˜& Ñ+Ô,Ù
Œ:�v˜f‘~Ô&Ù
Ô˜f ]Ñ3Ô4Ù
Œ?˜F ;Ñ/Ô0Ù
Ô˜V LÑ1Ô2Ù
Ô Ð(8Ñ!9Ô:Ù
Ô Ð(8Ñ!9Ô:à‡z�z�(×Ññ 	Œ|œX f¨XÑ&6Ó7ÀTÒJàÐr&   Úbeallc                 ó  • Uc
  [        5       nUR                  (       d  [        S5      e[        R                  " 5       nUR
                  (       d  SUl        [        R                  Ul        UR                  S:X  a§  [        R                  " UR                  UR                  [        S9n UR                  5         UR!                  US9  UR                  5         UR#                  UR$                  UR&                  5        UR)                  U 5         UR+                  5         g[        R.                  " UR                  UR                  [        US9n UR#                  UR$                  UR&                  5        UR)                  U 5         UR+                  5         g! [,         a     gf = f!  UR+                  5         f ! [,         a     f f = f= f! [,         a     gf = f!  UR+                  5         f ! [,         a     f f = f= f)ug  ElkÃ¼ld egy kÃ©sz MIME-Ã¼zenetet a beÃ¡llÃ­tott SMTP-szerveren. Hiba esetÃ©n KIVÃ‰TELT dob (a
hÃ­vÃ³ dÃ¶nti el, mit kezd vele: a riasztÃ¡s-kÃ¼ldÅ‘k naplÃ³zzÃ¡k, a teszt-levÃ©l gomb megmutatja).

Ha nincs konfigurÃ¡lva SMTP (szimulÃ¡ciÃ³s mÃ³d), RuntimeError-t dob - a hÃ­vÃ³knak ezt a
kÃ¼ldÃ©s ELÅ�TT, a `beall.konfiguralt` ellenÅ‘rzÃ©sÃ©vel kell kezelniÃ¼k.
Nu4   Nincs SMTP-szerver beÃ¡llÃ­tva (szimulÃ¡ciÃ³s mÃ³d).Fr   )Útimeout)Úcontext)rª   r«   )r‚   r;   ÚRuntimeErrorÚsslÚcreate_default_contextr1   Úcheck_hostnameÚ	CERT_NONEÚverify_moder/   ÚsmtplibÚSMTPr*   r,   ÚSMTP_IDOTULLEPES_MPÚehloÚstarttlsÚloginr-   r.   Úsend_messageÚquitrl   ÚSMTP_SSL)Úmsgr¨   Útls_kontextusr*   s       r$   Úkuldr½   J  s—  € ð �}Ü“ˆØ××ÜÐQÓRÐRä×.Ò.Ó0€MØ××ð
 (-ˆÔ$Ü$'§M¡MˆÔ!à‡�˜*Ó$Ü—,’,˜uŸ}™}¨e¯j©jÔBUÑVˆð
	Ø�L‰LŒNØ×Ñ ]ÐÑ3Ø�L‰LŒNØ�M‰M˜%×+Ñ+¨U¯\©\Ô:Ø× Ñ  Ô%ðØ—‘•ô ×"Ò" 5§=¡=°%·*±*ÔFYÐcpÑqˆð	Ø�M‰M˜%×+Ñ+¨U¯\©\Ô:Ø× Ñ  Ô%ðØ—‘•øô ó ÙðûðØ—‘•øÜó Ùðþô ó ÙðûðØ—‘•øÜó Ùðýs…   Â+A&F, ÄF Å7G" ÆG Æ
F)Æ(F)Æ,GÆ.F?Æ>GÆ?
GÇ	GÇGÇGÇ
GÇGÇ"HÇ$G5Ç4HÇ5
HÇ?HÈHÈHrT   )5rM   Úrer²   r­   Údataclassesr   r   r   Útypingr   r   r   r	   re   Úconfigr
   r   r   r   Údatabaser   Útitkosito_utilsr   r   rq   rr   rs   rx   rt   rv   rw   rp   ri   ru   r´   rD   r"   r%   r(   rO   rW   r‚   Úcompiler‡   rŽ   r�   r‹   r•   r8   rŸ   r£   r§   r½   rH   r&   r$   Ú<module>rÅ      sþ  ðñ óB 
Û Û 
Ý !ß 'ß .Ó .ã ß CÓ CÝ !ß 0ð €Ø€
Ø&Ð Ø€Ø"€Ø$Ð Ø,Ð Ø'Ð ð �:Ð0°,ÀØÐ*Ð,@ðÐ ð
 (Ð ð
 Ð à-Ð ð:˜cð : cô :ð
 ÷#Hð #Hó ð#HðL˜3ð  3ô ñFÐ'õ FðX —’ÐCÓD€Ø�zŠzÐLÓM€Ø�ZŠZÐ1Ó2€
Ø—:’:Ð0Ó1Ð ð9�T˜#˜s˜(‘^ð 9¨¨d°3¸°8©n¸dÀ3¹iÐ.GÑ(Hô 9ð~�sð  3ð °Tð ÀHÈSÁMð ÐVZô ð( �>Ø�ØÐ*Ø�)ØÐ+Ø�nØÐ<ØÐ+ð	€ð�T˜#˜s˜(‘^ð ¨h°s©mð ÀÀSÁ	ô ñ@+�XÐ.Ñ/ð +¸4ö +r&   