grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2aw­ã @sjddlZddlZddlZddlZddlZddlZddlZddlZddl 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'y ddl(Z(Wne)k �r�d(Z*YnXd)Z*Gd*d„dƒZ+e*�rÄGd+d,„d,e+ƒZ,ej-d,ƒd-Z.Gd.d/„d/e+ƒZ/e0d0k�rfd1d2„Z1e1d3ƒZ2e1d4ƒj3d5ƒZ4e5d6ƒd7Z6x e j7j8ƒZ9e9�s Pe6e9Z6�qWe5d8e:e6ƒƒe+d9ƒZ;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@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú,/opt/alt/python36/lib64/python3.6/smtplib.pyrGsc@s eZdZdS)ÚSMTPNotSupportedErrorN)rrrrrrrrJsrc@s eZdZdS)rN)rrrrrrrrQsc@seZdZdd„ZdS)rcCs||_||_||f|_dS)N)Ú smtp_codeÚ smtp_errorÚargs)ÚselfÚcodeÚmsgrrrÚ__init__bszSMTPResponseException.__init__N)rrrrrrrrrYs c@seZdZdd„ZdS)rcCs"||_||_||_|||f|_dS)N)rrÚsenderr)rrrrrrrrnszSMTPSenderRefused.__init__N)rrrrrrrrrgsc@seZdZdd„ZdS)rcCs||_|f|_dS)N)Ú recipientsr)rrrrrr|szSMTPRecipientsRefused.__init__N)rrrrrrrrrtsc@s eZdZdS)rN)rrrrrrrr�sc@s eZdZdS)r N)rrrrrrrr „sc@s eZdZdS)r N)rrrrrrrr ‡sc@s eZdZdS)r N)rrrrrrrr ŠscCs>tjj|ƒ\}}||fdkr6|jƒjdƒr.|Sd|Sd|S)NÚú)rr)ÚemailÚutilsÚ parseaddrÚstripÚ startswith)Ú addrstringÚ displaynameÚaddrrrrr ‘s  cCs$tjj|ƒ\}}||fdkr |S|S)Nr)rr)r!r"r#)r&r'r(rrrÚ _addr_onlyžs r)cCstjddtjdt|ƒƒS)Nz(?m)^\.z..z(?:\r\n|\n|\r(?!\n)))ÚreÚsubÚCRLF)Údatarrrr ¦scCstjdd|ƒ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@s‚eZdZdZdZdZdZdZdZe Z ddde j dfdd„Z dd„Zd d „Zd d „Zd d„Zdd„ZdLdd„Zdd„ZdMdd„Zdd„ZdNdd„ZdOdd„ZdPdd„Zd d!„ZdQd"d#„Zd$d%„Zd&d'„Zd(d)„Zffd*d+„Zffd,d-„Z d.d/„Z!d0d1„Z"e"Z#d2d3„Z$d4d5„Z%d6d7œd8d9„Z&dRd:d;„Z'dSdd?„Z)d6d7œd@dA„Z*dUdBdC„Z+fffdDdE„Z,ddfffdFdG„Z-dHdI„Z.dJdK„Z/dS)VrrNÚehlorc Cs°||_||_i|_d|_||_|rL|j||ƒ\}}|dkrL|jƒt||ƒ‚|dk r\||_nPt j ƒ}d|krt||_n8d} 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ÚsocketZgetfqdnZ gethostbynameZ gethostnameZgaierror) rÚhostÚportr;r5r8rrZfqdnr(rrrrâs* z SMTP.__init__cCs|S)Nr)rrrrÚ __enter__szSMTP.__enter__cGsNz>y$|jdƒ\}}|dkr$t||ƒ‚Wntk r:YnXWd|jƒXdS)NZQUITéÝ)Údocmdrrr:)rrrÚmessagerrrÚ__exit__s z SMTP.__exit__cCs ||_dS)N)Ú debuglevel)rrDrrrÚset_debuglevelszSMTP.set_debuglevelcGs@|jdkr,ttjjƒjƒf|ždtjiŽnt|dtjiŽdS)NéÚfile)rDÚprintÚdatetimeZnowZtimeÚsysÚstderr)rrrrrÚ _print_debug's "zSMTP._print_debugcCs2|jdkr|jd||f|jƒtj||f||jƒS)Nrz connect: to)rDrLr8r<Úcreate_connection)rr=r>r5rrrÚ _get_socket-s  zSMTP._get_socketÚ localhostc Csè|r ||_| r~|jdƒ|jdƒkr~|jdƒ}|dkr~|d|…||dd…}}y t|ƒ}Wntk r|tdƒ‚YnX|sˆ|j}|jdkr¢|jd||fƒ|j |||j ƒ|_ d|_ |j ƒ\}}|jdkrà|jdt|ƒƒ||fS)Nú:rrFznonnumeric portzconnect:)r8ÚfindÚrfindÚintÚ ValueErrorÚOSErrorÚ default_portrDrLrNr5ÚsockrGÚgetreplyÚrepr)rr=r>r8Úirrrrrr95s(      z SMTP.connectc Cs„|jdkr|jdt|ƒƒt|dƒrx|jrxt|tƒr@|j|jƒ}y|jj |ƒWq€t k rt|j ƒt dƒ‚Yq€Xnt dƒ‚dS)Nrzsend:rWzServer not connectedzplease run connect() first) rDrLrYÚhasattrrWÚ isinstanceÚstrÚencoder7ZsendallrUr:r)rÚsrrrÚsendWs   z SMTP.sendcCsd|dkr|}n|›d|›�}d|ks,d|krN|jddƒjddƒ}td|›�ƒ‚|j|›t›�ƒdS)Nrú ú Ú z\nz\rz=command and arguments contain prohibited newline characters: )ÚreplacerTr`r,)rÚcmdrr_rrrÚputcmdis z SMTP.putcmdcCsPg}|jdkr|jjdƒ|_�xy|jjtdƒ}Wn:tk rn}z|jƒtdt|ƒƒ‚WYdd}~XnX|s„|jƒtdƒ‚|j dkrž|j dt |ƒƒt |ƒtkr¼|jƒt ddƒ‚|j|d d…jd ƒƒ|dd …}y t|ƒ}Wntk �rd}PYnX|d d …d kr Pq Wd j|ƒ}|j dk�rH|j d||fƒ||fS)NÚrbrFz Connection unexpectedly closed: zConnection unexpectedly closedrzreply:iôzLine too long.és éó-ó zreply: retcode (%s); Msg: %aéÿÿÿÿ)rGrWÚmakefileÚreadlineÚ_MAXLINErUr:rr]rDrLrYÚlenrÚappendr$rSrTÚjoin)rÚrespÚlineÚerZerrcodeÚerrmsgrrrrXvs>         z SMTP.getreplycCs|j||ƒ|jƒS)N)rfrX)rrerrrrrA§s z SMTP.docmdcCs,|jd|p|jƒ|jƒ\}}||_||fS)NÚhelo)rfr;rXÚ helo_resp)rÚnamerrrrrrw­s z SMTP.heloc Cs2i|_|j|j|p|jƒ|jƒ\}}|d krJt|ƒdkrJ|jƒtdƒ‚||_|dkr`||fSd|_ |jj dƒj dƒ}|d=xª|D]¢}t j |ƒ}|r¾|jjddƒd |jdƒd|jd<q„tj d |ƒ}|r„|jd ƒjƒ}|j|jd ƒd…jƒ} |dk�r|jj|dƒd | |j|<q„| |j|<q„W||fS) NrFrzServer not connectedéúzlatin-1rcÚauthrraz((?P[A-Za-z0-9][A-Za-z0-9\-]*) ?Úfeaturerl)r6rfÚehlo_msgr;rXrpr:rÚ ehlo_respÚ does_esmtpÚdecodeÚsplitÚ OLDSTYLE_AUTHÚmatchÚgetÚgroupsr*ÚgroupÚlowerÚstringÚendr$) rryrrrsÚeachZ auth_matchÚmr|Úparamsrrrr0·s2   &  z SMTP.ehlocCs|jƒ|jkS)N)r‡r6)rÚoptrrrÚhas_extnêsz SMTP.has_extncCs|jd|ƒ|jƒdS)NÚhelprF)rfrX)rrrrrr�îs z SMTP.helpcCsd|_|jdƒS)Nr1Úrset)r7rA)rrrrr�ôsz SMTP.rsetc Cs&y |jƒWntk r YnXdS)N)r�r)rrrrÚ_rsetùs z SMTP._rsetcCs |jdƒS)NÚnoop)rA)rrrrr’sz SMTP.noopcCshd}|rH|jrHtdd„|Dƒƒr:|jdƒr2d|_ntdƒ‚ddj|ƒ}|jdd t|ƒ|fƒ|jƒS) Nrcss|]}|jƒdkVqdS)Úsmtputf8N)r‡)Ú.0Úxrrrú szSMTP.mail..r“zutf-8z SMTPUTF8 not supported by serverraÚmailz FROM:%s%s) rÚanyrŽr7rrrrfr rX)rrÚoptionsÚ optionlistrrrr— s   z SMTP.mailcCs<d}|r|jrddj|ƒ}|jddt|ƒ|fƒ|jƒS)NrraÚrcptzTO:%s%s)rrrrfr rX)rZrecipr™ršrrrr›s  z SMTP.rcptcCsÄ|jdƒ|jƒ\}}|jdkr0|jd||fƒ|dkrDt||ƒ‚n|t|tƒr\t|ƒjdƒ}t |ƒ}|dd…t kr||t }|dt }|j |ƒ|jƒ\}}|jdkr¸|jd||fƒ||fSdS) Nr-rzdata:ibr1éó.éþÿÿÿ) rfrXrDrLrr\r]r/r^r.ÚbCRLFr`)rrrÚreplÚqrrrr-&s"         z SMTP.datacCs|jdt|ƒƒ|jƒS)NÚvrfy)rfr)rX)rÚaddressrrrÚverifyCsz SMTP.verifycCs|jdt|ƒƒ|jƒS)NÚexpn)rfr)rX)rr£rrrr¥Jsz SMTP.expncCsf|jdkrb|jdkrbd|jƒdko.dknsb|jƒ\}}d|koRdknsbt||ƒ‚dS)NéÈri+)rxr~r0rwr )rrrsrrrÚehlo_or_helo_if_neededQs   zSMTP.ehlo_or_helo_if_neededT)Úinitial_response_okc Cs®|jƒ}|r|ƒnd}|dk rJt|jdƒdd�}|jd|d|ƒ\}}n|jd|ƒ\}}|dkr�tj|ƒ}t||ƒjdƒdd�}|j|ƒ\}}|d kr ||fSt||ƒ‚dS) Nr1r)ZeolZAUTHraiNéëé÷)r©rª)ÚupperÚ encode_base64r^rAÚbase64Z decodebytesr ) rZ mechanismZ authobjectr¨Zinitial_responseZresponserrsÚ challengerrrr{bs z SMTP.authcCs0|dkr dS|jdtj|jjdƒ|dƒjƒS)Nrar1Zmd5)ÚuserÚhmacZHMACÚpasswordr^Z 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—szSMTP.auth_loginc sÞ|jƒ|jdƒstdƒ‚|jdjƒ‰dddg}‡fdd„|Dƒ}|sPtdƒ‚|||_|_xv|D]n}d |jƒj d d ƒ}y.|j |t ||ƒ|d �\}} |dkr¨|| fSWqdt k rÐ} z | } WYdd} ~ XqdXqdW| ‚dS)Nr{z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINcsg|]}|ˆkr|‘qSrr)r”r{)Úadvertised_authlistrrú ÈszSMTP.login..z(No suitable authentication method found.Zauth_ú-Ú_)r¨r©é÷)r©r¹) r§rŽrr6r�rr¯r±r‡rdr{Úgetattrr ) rr¯r±r¨Zpreferred_authsZauthlistZ authmethodZ method_namerrsruZlast_exceptionr)rµrÚloginŸs*      z SMTP.logincCsî|jƒ|jdƒstdƒ‚|jdƒ\}}|dkrÜts.ÚToZBccZCccSsg|] }|d‘qS)rFr)r”Úarrrr¶³sz Resent-BccFr1r“z”One or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)Úutf8)ÚpolicyÚSMTPUTF8ú BODY=8BITMIMEz )Úlinesep)r×rØ)r§Zget_allrprTr!r"Z getaddressesÚcopyrrr^ÚUnicodeEncodeErrorrŽrÚioÚBytesIOÚ generatorZBytesGeneratorrÖZcloneZflattenÚgetvaluerÐ)rrrËrÌrÍrÎZresentZ header_prefixZ addr_fieldsZmsg_copyÚ internationalZbytesmsgÚgZflatmsgrrrÚ send_message�sJ           zSMTP.send_messagec Cs<z|j}d|_|r|jƒWd|j}d|_|r6|jƒXdS)N)rGr:rW)rrGrWrrrr:Îs z SMTP.closecCs.|jdƒ}d|_|_i|_d|_|jƒ|S)NÚquitF)rAr~rxr6rr:)rÚresrrrrãÛs   z SMTP.quit)rOrN)r)r)r)r)r)N)N)N)NNN)0rrrrDrGrxr}r~rÚ SMTP_PORTrVr<Ú_GLOBAL_DEFAULT_TIMEOUTrr?rCrErLrNr9r`rfrXrArwr0rŽ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    '  B 8 gL c@s4eZdZeZdddddejddfdd„Zdd„ZdS)ÚSMTP_SSLrrNc Cs–|dk r|dk rtdƒ‚|dk r0|dk r0tdƒ‚|dk s@|dk rVddl} | jdtdƒ||_||_|dkrxtj||d�}||_t j ||||||ƒdS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadrœ)r½r¾) rTrÂrÃrÄr¾r½rÅrÆrÈrr) rr=r>r;r¾r½r5r8rÈrÂrrrr÷s zSMTP_SSL.__init__cCsD|jdkr|jd||fƒtj||f||jƒ}|jj||jd�}|S)Nrzconnect:)r¿)rDrLr<rMr8rÈrÇr4)rr=r>r5Z new_socketrrrrNs   zSMTP_SSL._get_socket) rrrÚ SMTP_SSL_PORTrVr<rærrNrrrrrççs rçiÓc@s,eZdZdZdeddfdd„Zd dd „ZdS) ÚLMTPZlhlorNcCstj|||||d�dS)N)r;r8)rr)rr=r>r;r8rrrr.s z LMTP.__init__rOrc Cs´|ddkrtj||||d�Sy(tjtjtjƒ|_d|_|jj|ƒWnBtk rˆ|jdkrl|j d|ƒ|jr||jj ƒd|_‚YnX|j ƒ\}}|jdkr¬|j d|ƒ||fS)Nrú/)r8z connect fail:zconnect:) rr9r<ZAF_UNIXZ SOCK_STREAMrWrGrUrDrLr:rX)rr=r>r8rrrrrr94s"       z LMTP.connect)rOrN)rrrr}Ú LMTP_PORTrr9rrrrrés réÚ__main__cCs(tjj|dƒtjjƒtjjƒjƒS)Nz: )rJÚstdoutÚwriteÚflushÚstdinrnr$)ÚpromptrrrrñNs rñrÑrÓú,zEnter message, end with ^D:rzMessage length is %drOrF)?r<rÜr*Z email.utilsr!Z email.messageZemail.generatorr­r°rÚrIrJZemail.base64mimerr¬Ú__all__rårèr,rŸroÚcompileÚIr‚rUrrrrrrrr r r r r)r r.r/rÅÚ ImportErrorrÀrrçrqrërérrñZfromaddrr�ZtoaddrsrHrrðrnrtrpZserverrErÐrãrrrrÚ,sŠ        .0 /