grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]hªã @sQddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Zddddddd d d d d dg ZdZdZdZdZdZejdejƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd „d eƒZ Gdd „d eƒZ!Gdd „d eƒZ"d d „Z#d!d"„Z$d#d „Z%d$d%„Z&d&d'„Z'yddl(Z(Wne)k r3d(Z*YnXd)Z*Gd*d„dƒZ+e*rvGd+d,„d,e+ƒZ,ej-d,ƒd-Z.Gd.d/„d/e+ƒZ/e0d0krMd1d2„Z1e1d3ƒZ2e1d4ƒj3d5ƒZ4e5d6ƒd7Z6x%e j7j8ƒZ9e9 rõPe6e9Z6qÞWe5d8e:e6ƒƒe+d9ƒZ;e;j<d:ƒe;j=e2e4e6ƒe;j>ƒdS);éN)Ú body_encodeÚ SMTPExceptionÚSMTPServerDisconnectedÚSMTPResponseExceptionÚSMTPSenderRefusedÚSMTPRecipientsRefusedÚ SMTPDataErrorÚSMTPConnectErrorÚ SMTPHeloErrorÚSMTPAuthenticationErrorÚ quoteaddrÚ quotedataÚSMTPéiÑz s i z auth=(.*)c@seZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú,/opt/alt/python35/lib64/python3.5/smtplib.pyrGs c@seZdZdS)ÚSMTPNotSupportedErrorN)rrrrrrrrJs rc@seZdZdS)rN)rrrrrrrrQs c@seZdZdd„ZdS)rcCs%||_||_||f|_dS)N)Ú smtp_codeÚ smtp_errorÚargs)ÚselfÚcodeÚmsgrrrÚ__init__bs  zSMTPResponseException.__init__N)rrrrrrrrrYs c@seZdZdd„ZdS)rcCs1||_||_||_|||f|_dS)N)rrÚsenderr)rrrrrrrrns   zSMTPSenderRefused.__init__N)rrrrrrrrrgs c@seZdZdd„ZdS)rcCs||_|f|_dS)N)Ú recipientsr)rrrrrr|s zSMTPRecipientsRefused.__init__N)rrrrrrrrrts c@seZdZdS)rN)rrrrrrrr�s c@seZdZdS)r N)rrrrrrrr „s c@seZdZdS)r N)rrrrrrrr ‡s c@seZdZdS)r N)rrrrrrrr Šs cCsStjj|ƒ\}}||fdkrK|jƒjdƒrC|Sd|Sd|S)NÚú)rr)ÚemailÚutilsÚ parseaddrÚstripÚ startswith)Ú addrstringÚ displaynameÚaddrrrrr ‘s cCs2tjj|ƒ\}}||fdkr.|S|S)Nr)rr)r!r"r#)r&r'r(rrrÚ _addr_onlyžsr)cCs"tjddtjdt|ƒƒS)Nz(?m)^\.z..z(?:\r\n|\n|\r(?!\n)))ÚreÚsubÚCRLF)Údatarrrr ¦s cCstjdd|ƒS)Ns(?m)^\.s..)r*r+)ZbindatarrrÚ_quote_periods¯sr.cCstjdt|ƒS)Nz(?:\r\n|\n|\r(?!\n)))r*r+r,)r-rrrÚ _fix_eols²sr/FTc@s8eZdZdZdZdZdZdZdZe Z ddde j ddd„Z dd„Zd d „Zd d „Zd d„Zdd„Zddddd„Zdd„Zddd„Zdd„Zddd„Zddd„Zddd„Zd d!„Zdd"d#„Zd$d%„Zd&d'„Zd(d)„Zgd*d+„Zgd,d-„Z d.d/„Z!d0d1„Z"e"Z#d2d3„Z$d4d5„Z%d6d7d8d9„Z&dd:d;„Z'dd<d=„Z(dd>d?„Z)d6d7d@dA„Z*ddddBdC„Z+ggdDdE„Z,ddgidFdG„Z-dHdI„Z.dJdK„Z/dS)LrrNÚehlorc Csô||_||_i|_d|_||_|rp|j||ƒ\}}|dkrp|jƒt||ƒ‚|dk rˆ||_nht j ƒ}d|kr¬||_nDd} yt j t j ƒƒ} Wnt j k râYnXd| |_dS)NÚasciiéÜÚ.z 127.0.0.1z[%s])Ú_hostÚtimeoutÚesmtp_featuresÚcommand_encodingÚsource_addressÚconnectÚcloser Úlocal_hostnameÚsocketÚgetfqdnÚ gethostbynameÚ gethostnameÚgaierror) rÚhostÚportr;r5r8rrZfqdnr(rrrrâs*            z SMTP.__init__cCs|S)Nr)rrrrÚ __enter__szSMTP.__enter__cGs_zMy4|jdƒ\}}|dkr6t||ƒ‚Wntk rKYnXWd|jƒXdS)NZQUITéÝ)Údocmdrrr:)rrrÚmessagerrrÚ__exit__s   z SMTP.__exit__cCs ||_dS)N)Ú debuglevel)rrHrrrÚset_debuglevelszSMTP.set_debuglevelcGsN|jdkr7ttjjƒjƒ|dtjŒnt|dtjŒdS)NéÚfile)rHÚprintÚdatetimeZnowÚtimeÚsysÚstderr)rrrrrÚ _print_debug's(zSMTP._print_debugcCsG|jdkr+|jd||f|jƒtj||f||jƒS)Nrz connect: to)rHrQr8r<Úcreate_connection)rrArBr5rrrÚ _get_socket-szSMTP._get_socketÚ localhostc Cs>|r||_| r¥|jdƒ|jdƒkr¥|jdƒ}|dkr¥|d|…||dd…}}yt|ƒ}Wntk r¤tdƒ‚YnX|s´|j}|jdkrÙ|jd||fƒ|j |||j ƒ|_ d|_ |j ƒ\}}|jdkr4|jdt|ƒƒ||fS)Nú:rrJznonnumeric portzconnect:)r8ÚfindÚrfindÚintÚ ValueErrorÚOSErrorÚ default_portrHrQrSr5ÚsockrKÚgetreplyÚrepr)rrArBr8Úirrrrrr95s(  % %   z SMTP.connectc Cs°|jdkr%|jdt|ƒƒt|dƒr |jr t|tƒr^|j|jƒ}y|jj |ƒWq¬t k rœ|j ƒt dƒ‚Yq¬Xn t dƒ‚dS)Nrzsend:r\zServer not connectedzplease run connect() first) rHrQr^Úhasattrr\Ú isinstanceÚstrÚencoder7ÚsendallrZr:r)rÚsrrrÚsendWs  z SMTP.sendcCsC|dkrd|tf}nd||tf}|j|ƒdS)Nrz%s%sz%s %s%s)r,rf)rÚcmdrrbrrrÚputcmdis z SMTP.putcmdcCs±g}|jdkr*|jjdƒ|_xEy|jjtdƒ}WnEtk rŽ}z%|jƒtdt|ƒƒ‚WYdd}~XnX|s«|jƒtdƒ‚|j dkrÐ|j dt |ƒƒt |ƒtkrû|jƒt ddƒ‚|j|d d…jd ƒƒ|dd …}yt|ƒ}Wntk rVd}PYnX|d d …d kr-Pq-Wd j|ƒ}|j dkr§|j d||fƒ||fS)NÚrbrJz Connection unexpectedly closed: zConnection unexpectedly closedrzreply:iôzLine too long.és éó-s zreply: retcode (%s); Msg: %aéÿÿÿÿ)rKr\ÚmakefileÚreadlineÚ_MAXLINErZr:rrbrHrQr^ÚlenrÚappendr$rXrYÚjoin)rÚrespÚlineÚerZerrcodeÚerrmsgrrrr]qs>  #     z SMTP.getreplycCs|j||ƒ|jƒS)N)rhr])rrgrrrrrE¢sz SMTP.docmdcCs>|jd|p|jƒ|jƒ\}}||_||fS)NÚhelo)rhr;r]Ú helo_resp)rÚnamerrrrrrx¨s z SMTP.heloc Cs¨i|_|j|j|p!|jƒ|jƒ\}}|d krkt|ƒdkrk|jƒtdƒ‚||_|dkrŠ||fSd|_ |jj dƒj dƒ}|d=xæ|D]Þ}t j |ƒ}|r |jjddƒd |jdƒd|jd[A-Za-z0-9][A-Za-z0-9\-]*) ?Úfeaturerm)r6rhÚehlo_msgr;r]rqr:rÚ ehlo_respÚ does_esmtpÚdecodeÚsplitÚ OLDSTYLE_AUTHÚmatchÚgetÚgroupsr*ÚgroupÚlowerÚstringÚendr$) rrzrrrtÚeachZ auth_matchÚmrÚparamsrrrr0²s2        1" 'z SMTP.ehlocCs|jƒ|jkS)N)rŠr6)rÚoptrrrÚhas_extnåsz SMTP.has_extncCs|jd|ƒ|jƒdS)NÚhelprJ)rhr])rrrrrr’ész SMTP.helpcCsd|_|jdƒS)Nr1Úrset)r7rE)rrrrr“ïs z SMTP.rsetc Cs'y|jƒWntk r"YnXdS)N)r“r)rrrrÚ_rsetôs z SMTP._rsetcCs |jdƒS)NÚnoop)rE)rrrrr•sz SMTP.noopcCs’d}|rh|jrhtdd„|DƒƒrU|jdƒrId|_n tdƒ‚ddj|ƒ}|jdd t|ƒ|fƒ|jƒS) Nrcss!|]}|jƒdkVqdS)Úsmtputf8N)rŠ)Ú.0Úxrrrú szSMTP.mail..r–zutf-8z SMTPUTF8 not supported by serverr~Úmailz FROM:%s%s) r‚Úanyr‘r7rrsrhr r])rrÚoptionsÚ optionlistrrrršs    z SMTP.mailcCsRd}|r(|jr(ddj|ƒ}|jddt|ƒ|fƒ|jƒS)Nrr~ÚrcptzTO:%s%s)r‚rsrhr r])rZreciprœr�rrrržs  z SMTP.rcptcCs|jdƒ|jƒ\}}|jdkrD|jd||fƒ|dkrbt||ƒ‚n¬t|tƒr†t|ƒjdƒ}t |ƒ}|dd…t kr²|t }|dt }|j |ƒ|jƒ\}}|jdkr|jd||fƒ||fSdS) Nr-rzdata:ibr1éó.éþÿÿÿ) rhr]rHrQrrarbr/rcr.ÚbCRLFrf)rrrÚreplÚqrrrr-!s"     z SMTP.datacCs |jdt|ƒƒ|jƒS)NÚvrfy)rhr)r])rÚaddressrrrÚverify>sz SMTP.verifycCs |jdt|ƒƒ|jƒS)NÚexpn)rhr)r])rr¦rrrr¨Esz SMTP.expncCs…|jdkr�|jdkr�d|jƒdko?dkns�|jƒ\}}d|komdkns�t||ƒ‚dS)NéÈri+)ryr�r0rxr )rrrtrrrÚehlo_or_helo_if_neededLs &zSMTP.ehlo_or_helo_if_neededÚinitial_response_okTc Csý|jƒ}|r|ƒnd}|dk rkt|jdƒddƒ}|jd|d|ƒ\}}n|jd|ƒ\}}|dkrÔtj|ƒ}t||ƒjdƒddƒ}|j|ƒ\}}|d krê||fSt||ƒ‚dS) Nr1ZeolrZAUTHr~iNéëé÷)r¬r­)ÚupperÚ encode_base64rcrEÚbase64Z decodebytesr ) rZ mechanismZ authobjectr«Zinitial_responseÚresponserrtÚ challengerrrr}]s  #   z SMTP.authcCs@|dkrdS|jdtj|jjdƒ|dƒjƒS)Nr~r1Úmd5)ÚuserÚhmacZHMACÚpasswordrcÚ hexdigest)rr²rrrÚ auth_cram_md5„s zSMTP.auth_cram_md5cCsd|j|jfS)Nz%s%s)r´r¶)rr²rrrÚ auth_plain�szSMTP.auth_plaincCs|dkr|jS|jSdS)N)r´r¶)rr²rrrÚ auth_login’s zSMTP.auth_loginc s+|jƒ|jdƒs%tdƒ‚|jdjƒ‰dddg}‡fdd†|Dƒ}|srtdƒ‚|||_|_x™|D]‘}d |jƒj d d ƒ}yA|j |t ||ƒd |ƒ\}} |dkrî|| fSWqŒt k r} z | } WYdd} ~ XqŒXqŒW| ‚dS)Nr}z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINcs"g|]}|ˆkr|‘qSrr)r—r})Úadvertised_authlistrrú Ãs zSMTP.login..z(No suitable authentication method found.Zauth_ú-Ú_r«r¬é÷)r¬r¿) rªr‘rr6r„rr´r¶rŠÚreplacer}Úgetattrr ) rr´r¶r«Zpreferred_authsZauthlistZ authmethodZ method_namerrtrvZlast_exceptionr)r»rÚloginšs*     z SMTP.logincCs+|jƒ|jdƒs%tdƒ‚|jdƒ\}}|dkrtsXtdƒ‚|dk r||dk r|tdƒ‚|dk r |dk r tdƒ‚|dkrÄtjd|d |ƒ}|j |j d |j ƒ|_ d|_ d|_ d|_i|_d |_nt||ƒ‚||fS) NÚstarttlsz+STARTTLS extension not supported by server.ZSTARTTLSr2z&No SSL support included in this Pythonz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiveÚcertfileÚkeyfileÚserver_hostnamer)rªr‘rrEÚ _have_sslÚ RuntimeErrorrYÚsslÚ_create_stdlib_contextÚ wrap_socketr\r4rKryr�r6r‚r)rrÅrÄÚcontextrtZreplyrrrrÃÜs0             z SMTP.starttlsc Csð|jƒg}t|tƒr4t|ƒjdƒ}|jr�|jdƒrc|jdt|ƒƒx|D]}|j|ƒqjW|j ||ƒ\}} |dkrÚ|dkr¾|j ƒn |j ƒt || |ƒ‚i} t|tƒrø|g}xp|D]h} |j | |ƒ\}} |dkrE|dkrE|| f| | <|dkrÿ|j ƒt| ƒ‚qÿWt| ƒt|ƒkr™|j ƒt| ƒ‚|j|ƒ\}} |dkrì|dkrÓ|j ƒn |j ƒt|| ƒ‚| S)Nr1Úsizezsize=%dr{i¥éû)rªrarbr/rcr‚r‘rrrqršr:r”rržrr-r) rÚ from_addrÚto_addrsrÚ mail_optionsÚ rcpt_optionsZ esmtp_optsÚoptionrrtZsenderrsr�rrrÚsendmailsF@                 z SMTP.sendmailcCs|jƒ|jdƒ}|dkr.d}n't|ƒdkrId}n tdƒ‚|dkr�|d|kr||dn ||d}|dkrìdd „||d ||d ||d fDƒ}d d „tjj|ƒDƒ}tj|ƒ} | d =| d=d} y#dj|f|•ƒj dƒWn3t k rg|j dƒs]t dƒ‚d} YnXt jƒ�x} | r·tjj| d|jjddƒƒ} |ddg7}ntjj| ƒ} | j| ddƒ| jƒ} WdQRX|j||| ||ƒS)Nz Resent-DaterrJzResent-z0message has more than one 'Resent-' header blockZSenderÚFromcSs"g|]}|dk r|‘qS)Nr)r—Úfrrrr¼¥s z%SMTP.send_message..ÚToZBccZCccSsg|]}|d‘qS)rJr)r—Úarrrr¼©s z Resent-BccFr1r–z”One or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityTÚpolicyÚutf8ZSMTPUTF8z BODY=8BITMIMEÚlinesepz )rªZget_allrqrYr!r"Z getaddressesÚcopyrsrcÚUnicodeEncodeErrorr‘rÚioÚBytesIOÚ generatorZBytesGeneratorrÙZcloneZflattenÚgetvaluerÔ)rrrÏrÐrÑrÒZresentZ header_prefixZ addr_fieldsZmsg_copyÚ internationalZbytesmsgÚgZflatmsgrrrÚ send_messagexsH        #    zSMTP.send_messagec CsPz&|j}d|_|r%|jƒWd|j}d|_|rK|jƒXdS)N)rKr:r\)rrKr\rrrr:Äs    z SMTP.closecCs?|jdƒ}d|_|_i|_d|_|jƒ|S)NÚquitF)rEr�ryr6r‚r:)rÚresrrrråÑs    z SMTP.quit)0rrrrHrKryr€r�r‚Ú SMTP_PORTr[r<Ú_GLOBAL_DEFAULT_TIMEOUTrrCrGrIrQrSr9rfrhr]rErxr0r‘r’r“r”r•ršržr-r§r¥r¨rªr}r¸r¹rºrÂrÃrÔrär:rårrrrr½s\  -   "  1 3       ' B4gK c @sIeZdZeZdddddejdddd„Zdd„ZdS)ÚSMTP_SSLrrNc Cs§|dk r$|dk r$tdƒ‚|dk rH|dk rHtdƒ‚||_||_|dkr~tjd|d|ƒ}||_tj||||||ƒdS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverÄrÅ)rYrÅrÄrÉrÊrÌrr) rrArBr;rÅrÄr5r8rÌrrrrís       zSMTP_SSL.__init__cCsb|jdkr%|jd||fƒtj||f||jƒ}|jj|d|jƒ}|S)Nrzconnect:rÆ)rHrQr<rRr8rÌrËr4)rrArBr5Z new_socketrrrrSs  zSMTP_SSL._get_socket) rrrÚ SMTP_SSL_PORTr[r<rèrrSrrrrréÝs  réiÓc@sCeZdZdZdedddd„Zddddd „ZdS) ÚLMTPZlhlorNcCs#tj|||d|d|ƒdS)Nr;r8)rr)rrArBr;r8rrrr sz LMTP.__init__rTrc Csò|ddkr)tj|||d|ƒSy8tjtjtjƒ|_d|_|jj|ƒWnStk r¶|jdkr�|j d|ƒ|jr¦|jj ƒd|_‚YnX|j ƒ\}}|jdkrè|j d|ƒ||fS)Nrú/r8z connect fail:zconnect:) rr9r<ÚAF_UNIXÚ SOCK_STREAMr\rKrZrHrQr:r])rrArBr8rrrrrr9&s"     z LMTP.connect)rrrr€Ú LMTP_PORTrr9rrrrrës  rëÚ__main__cCs4tjj|dƒtjjƒtjjƒjƒS)Nz: )rOÚstdoutÚwriteÚflushÚstdinror$)Úpromptrrrrõ@s rõrÕr×ú,zEnter message, end with ^D:rzMessage length is %drTrJ)?r<rÞr*Z email.utilsr!Z email.messageZemail.generatorr°rµrÜrMrOZemail.base64mimerr¯Ú__all__rçrêr,r¢rpÚcompileÚIr…rZrrrrrrrr r r r r)r r.r/rÉÚ ImportErrorrÇrrérrrïrërrõZfromaddrr„ZtoaddrsrLrrôrorurqZserverrIrÔrårrrrÚ,s„                     ÿÿÿ!, /