U e5dɯã @snddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Zddddddd d d d d ddg ZdZdZdZdZdZdZe dej¡ZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd „d eƒZ Gdd „d eƒZ!Gdd „d eƒZ"Gd d „d eƒZ#d!d „Z$d"d#„Z%d$d„Z&d%d&„Z'd'd(„Z(z ddl)Z)Wne*k �r–d)Z+YnXd*Z+Gd+d„dƒZ,e+�rÊGd,d-„d-e,ƒZ-e .d-¡d.Z/Gd/d0„d0e,ƒZ0e1d1k�rjd2d3„Z2e2d4ƒZ3e2d5ƒ 4d6¡Z5e6d7ƒd8Z7e j8 9¡Z:e:�s&�q2e7e:Z7�qe6d9e;e7ƒƒe,d:ƒZe3e5e7¡e< ?¡dS)<éN)Ú body_encodeÚ SMTPExceptionÚSMTPNotSupportedErrorÚSMTPServerDisconnectedÚSMTPResponseExceptionÚSMTPSenderRefusedÚSMTPRecipientsRefusedÚ SMTPDataErrorÚSMTPConnectErrorÚ SMTPHeloErrorÚSMTPAuthenticationErrorÚ quoteaddrÚ quotedataÚSMTPéiÑú s i éz auth=(.*)c@s eZdZdS)rN©Ú__name__Ú __module__Ú __qualname__©rrú/usr/lib64/python3.8/smtplib.pyrHsc@s eZdZdS)rNrrrrrrKsc@s eZdZdS)rNrrrrrrRsc@seZdZdd„ZdS)rcCs||_||_||f|_dS©N)Ú smtp_codeÚ smtp_errorÚargs)ÚselfÚcodeÚmsgrrrÚ__init__cszSMTPResponseException.__init__N©rrrr rrrrrZs c@seZdZdd„ZdS)rcCs"||_||_||_|||f|_dSr)rrÚsenderr)rrrr"rrrr oszSMTPSenderRefused.__init__Nr!rrrrrhsc@seZdZdd„ZdS)rcCs||_|f|_dSr)Ú recipientsr)rr#rrrr }szSMTPRecipientsRefused.__init__Nr!rrrrrusc@s eZdZdS)r Nrrrrrr ‚sc@s eZdZdS)r Nrrrrrr …sc@s eZdZdS)r Nrrrrrr ˆsc@s eZdZdS)r Nrrrrrr ‹scCs>tj |¡\}}||fdkr6| ¡ d¡r.|Sd|Sd|S)N©Úr%ú)ÚemailÚutilsÚ parseaddrÚstripÚ startswith©Z addrstringZ displaynameÚaddrrrrr ’s  cCs$tj |¡\}}||fdkr |S|S)Nr$)r'r(r)r,rrrÚ _addr_onlyŸs r.c Cst ddt dt|¡¡S)Nz(?m)^\.z..ú(?:\r\n|\n|\r(?!\n))©ÚreÚsubÚCRLF©Údatarrrr§s ÿcCst dd|¡S)Ns(?m)^\.s..)r1r2)ZbindatarrrÚ_quote_periods°sr6cCst dt|¡S)Nr/r0r4rrrÚ _fix_eols³sr7FTc@sveZdZdZdZdZdZdZdZdZ e Z ddde j dfdd„Zdd„Zd d „Zd d „Zd d„Zdd„ZdMdd„Zdd„ZdNdd„Zdd„ZdOdd„ZdPdd„ZdQdd„Zd d!„ZdRd"d#„Zd$d%„Zd&d'„Zd(d)„ZdSd+d,„Z dTd-d.„Z!d/d0„Z"d1d2„Z#e#Z$d3d4„Z%d5d6„Z&d7d8œd9d:„Z'dUd;d<„Z(dVd=d>„Z)dWd?d@„Z*d7d8œdAdB„Z+dXdCdD„Z,dYdEdF„Z-dZdGdH„Z.dIdJ„Z/dKdL„Z0dS)[rrNÚehlor%c Cs¶||_||_i|_d|_||_d|_|rR| ||¡\}}|dkrR| ¡t||ƒ‚|dk rb||_ nPt   ¡}d|krz||_ n8d} zt   t   ¡¡} Wnt jk r¦YnXd| |_ dS)NÚasciiréÜÚ.z 127.0.0.1z[%s])Ú_hostÚtimeoutÚesmtp_featuresÚcommand_encodingÚsource_addressÚ_auth_challenge_countÚconnectÚcloser Úlocal_hostnameÚsocketZgetfqdnZ gethostbynameZ gethostnameZgaierror) rÚhostÚportrDr=r@rrZfqdnr-rrrr ås, z SMTP.__init__cCs|Srr©rrrrÚ __enter__szSMTP.__enter__cGsNz>z$| d¡\}}|dkr$t||ƒ‚Wntk r:YnXW5| ¡XdS)NZQUITéÝ)rCÚdocmdrr)rrrÚmessagerrrÚ__exit__s z SMTP.__exit__cCs ||_dSr)Ú debuglevel)rrNrrrÚset_debuglevel"szSMTP.set_debuglevelcGs@|jdkr,ttj ¡ ¡f|ždtjiŽnt|dtjiŽdS)NéÚfile)rNÚprintÚdatetimeZnowÚtimeÚsysÚstderr©rrrrrÚ _print_debug+s "zSMTP._print_debugcCs2|jdkr| d||f|j¡t ||f||j¡S)Nrz connect: to)rNrXr@rEÚcreate_connection)rrFrGr=rrrÚ _get_socket1s   ÿzSMTP._get_socketÚ localhostcCsÜ|r ||_|s|| d¡| d¡kr|| d¡}|dkr||d|…||dd…}}z t|ƒ}Wntk rztdƒ‚YnX|s†|j}t d|||¡|  |||j ¡|_ d|_ |  ¡\}}|jdkrÔ| dt|ƒ¡||fS)Nú:rrPznonnumeric portzsmtplib.connectúconnect:)r@ÚfindÚrfindÚintÚ ValueErrorÚOSErrorÚ default_portrUÚauditrZr=ÚsockrQÚgetreplyrNrXÚrepr)rrFrGr@ÚirrrrrrB9s&     z SMTP.connectcCsˆ|jdkr| dt|ƒ¡|jr|t|tƒr6| |j¡}t  d||¡z|j  |¡Wq„t k rx|  ¡t dƒ‚Yq„Xnt dƒ‚dS)Nrzsend:z smtplib.sendúServer not connectedzplease run connect() first)rNrXrgreÚ isinstanceÚstrÚencoder?rUrdZsendallrbrCr)rÚsrrrÚsendZs   z SMTP.sendcCsd|dkr|}n|›d|›�}d|ks,d|krN| dd¡ dd¡}td|›�ƒ‚| |›t›�¡dS)Nr%ú ú Ú z\nz\rz=command and arguments contain prohibited newline characters: )Úreplacerarnr3)rÚcmdrrmrrrÚputcmdmsÿz SMTP.putcmdc CsPg}|jdkr|j d¡|_z|j td¡}Wn:tk rj}z| ¡tdt|ƒƒ‚W5d}~XYnX|s€| ¡tdƒ‚|j dkrš|  dt |ƒ¡t |ƒtkr¸| ¡t ddƒ‚| |d d… d ¡¡|dd …}z t|ƒ}Wn tk �rd }Y�q YnX|d d …d kr�q qd |¡}|j dk�rH|  d||f¡||fS)NÚrbrPz Connection unexpectedly closed: zConnection unexpectedly closedrzreply:iôzLine too long.és ééÿÿÿÿó-ó zreply: retcode (%s); Msg: %a)rQreZmakefileÚreadlineÚ_MAXLINErbrCrrkrNrXrgÚlenrÚappendr*r`raÚjoin)rÚrespÚlineÚerZerrcodeÚerrmsgrrrrfzs>  ÿ        z SMTP.getreplycCs| ||¡| ¡Sr©rtrf)rrsrrrrrK«s z SMTP.docmdcCs,| d|p|j¡| ¡\}}||_||fS)NÚhelo)rtrDrfÚ helo_resp)rÚnamerrrrrr…±s z SMTP.heloc Cs.i|_| |j|p|j¡| ¡\}}|dkrJt|ƒdkrJ| ¡tdƒ‚||_|dkr`||fSd|_ |j  d¡  d¡}|d=|D]¢}t   |¡}|r¼|j dd ¡d | d¡d|jd<q‚t  d |¡}|r‚| d ¡ ¡}|j| d ¡d… ¡} |dk�r|j |d ¡d | |j|<q‚| |j|<q‚||fS) NrxrriéúrPzlatin-1rqÚauthr%roz((?P[A-Za-z0-9][A-Za-z0-9\-]*) ?Úfeature)r>rtÚehlo_msgrDrfr}rCrÚ ehlo_respÚ does_esmtpÚdecodeÚsplitÚ OLDSTYLE_AUTHÚmatchÚgetÚgroupsr1ÚgroupÚlowerÚstringÚendr*) rr‡rrr€ÚeachZ auth_matchÚmrŠZparamsrrrr8»sB   ÿ ÿ    ÿÿ  z SMTP.ehlocCs| ¡|jkSr)r•r>)rÚoptrrrÚhas_extnîsz SMTP.has_extncCs| d|¡| ¡dS)NÚhelprPr„rWrrrrœòs z SMTP.helpcCsd|_| d¡S)Nr9Úrset)r?rKrHrrrr�øsz SMTP.rsetcCs&z | ¡Wntk r YnXdSr)r�rrHrrrÚ_rsetýs z SMTP._rsetcCs | d¡S)NÚnoop)rKrHrrrrŸ sz SMTP.nooprcCshd}|rH|jrHtdd„|Dƒƒr:| d¡r2d|_ntdƒ‚dd |¡}| dd t|ƒ|f¡| ¡S) Nr%css|]}| ¡dkVqdS)Úsmtputf8N)r•)Ú.0ÚxrrrÚ szSMTP.mail..r zutf-8z SMTPUTF8 not supported by serverroÚmailz FROM:%s%s) r�Úanyr›r?rrrtr rf)rr"ÚoptionsÚ optionlistrrrr¤ s   ÿz SMTP.mailcCs<d}|r|jrdd |¡}| ddt|ƒ|f¡| ¡S)Nr%roÚrcptzTO:%s%s)r�rrtr rf)rZrecipr¦r§rrrr¨"s  z SMTP.rcptcCsÄ| d¡| ¡\}}|jdkr0| d||f¡|dkrDt||ƒ‚n|t|tƒr\t|ƒ d¡}t |ƒ}|dd…t kr||t }|dt }|  |¡| ¡\}}|jdkr¸| d||f¡||fSdS)Nr5rzdata:ibr9éþÿÿÿó.) rtrfrNrXr rjrkr7rlr6ÚbCRLFrn)rrrÚreplÚqrrrr5*s"         z SMTP.datacCs| dt|ƒ¡| ¡S)NÚvrfy©rtr.rf©rZaddressrrrÚverifyGsz SMTP.verifycCs| dt|ƒ¡| ¡S)NÚexpnr¯r°rrrr²Nsz SMTP.expncCsb|jdkr^|jdkr^d| ¡dkr0dks^n| ¡\}}d|krRdks^nt||ƒ‚dS)NéÈri+)r†rŒr8r…r )rrr€rrrÚehlo_or_helo_if_neededUs  zSMTP.ehlo_or_helo_if_neededT©Úinitial_response_okc Csè| ¡}|r|ƒnd}|dk rPt| d¡dd�}| d|d|¡\}}d|_n| d|¡\}}d|_|dkrÊ|jd7_t |¡}t||ƒ d¡dd�}| |¡\}}|jtkrftd t ||fƒƒ‚qf|d krÚ||fSt ||ƒ‚dS) Nr9r%)ZeolZAUTHrorPriNz4Server AUTH mechanism infinite loop. Last response: ©éëi÷) ÚupperÚ encode_base64rlrKrAÚbase64Z decodebytesÚ _MAXCHALLENGErrgr ) rZ mechanismZ authobjectr¶Zinitial_responseZresponserr€Ú challengerrrr‰fs2  ÿ  ÿÿz SMTP.authcCs0|dkr dS|jdt |j d¡|d¡ ¡S)Nror9Zmd5)ÚuserÚhmacZHMACÚpasswordrlZ hexdigest©rr½rrrÚ auth_cram_md5–s  ÿzSMTP.auth_cram_md5cCsd|j|jfS)Nz%s%s)r¾rÀrÁrrrÚ auth_plainŸszSMTP.auth_plaincCs"|dks|jdkr|jS|jSdS)Né)rAr¾rÀrÁrrrÚ auth_login¤szSMTP.auth_loginc sà| ¡| d¡stdƒ‚|jd ¡‰dddg}‡fdd„|Dƒ}|sPtdƒ‚|||_|_|D]t}d | ¡  d d ¡}z4|j |t ||ƒ|d �\}} |d kr¬|| fWSWqbt k rÔ} z| } W5d} ~ XYqbXqb| ‚dS)Nr‰z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINcsg|]}|ˆkr|‘qSrr)r¡r‰©Zadvertised_authlistrrÚ ÕsÿzSMTP.login..z(No suitable authentication method found.Zauth_ú-Ú_rµr·) r´r›rr>r�rr¾rÀr•rrr‰Úgetattrr ) rr¾rÀr¶Zpreferred_authsZauthlistZ authmethodZ method_namerr€r‚Zlast_exceptionrrÆrÚlogin¬s0 ÿ þ z SMTP.logincCsî| ¡| d¡stdƒ‚| d¡\}}|dkrÜtsr�r)rrÒrÑÚcontextr€ZreplyrÖrrrrÌîsB ÿÿÿÿ z SMTP.starttlsc Cs^| ¡g}t|tƒr$t|ƒ d¡}|jrZ| d¡rF| dt|ƒ¡|D]}| |¡qJ|  ||¡\}} |dkr˜|dkr„|  ¡n|  ¡t || |ƒ‚i} t|tƒr¬|g}|D]H} |  | |¡\}} |dkrà|dkrà|| f| | <|dkr°|  ¡t| ƒ‚q°t| ƒt|ƒk�r|  ¡t| ƒ‚| |¡\}} |dk�rZ|dk�rH|  ¡n|  ¡t|| ƒ‚| S)Nr9Úsizezsize=%drˆi¥éû)r´rjrkr7rlr�r›r~r}r¤rCržrr¨rr5r ) rÚ from_addrÚto_addrsrÚ mail_optionsÚ rcpt_optionsZ esmtp_optsZoptionrr€Zsenderrsr˜rrrÚsendmail&sF@            z SMTP.sendmailc Csœ| ¡| d¡}|dkr d}nt|ƒdkr2d}ntdƒ‚|dkr||d|krZ||dn ||d}tj |g¡dd}|dkrÆd d „||d ||d ||d fDƒ}dd „tj |¡Dƒ}t |¡} | d =| d=d} zd |f|•¡  d¡Wn.t k �r(|  d¡�s t dƒ‚d} YnXt  ¡�R} | �r^tjj| |jjdd�d�} |d˜}n tj | ¡} | j| dd�|  ¡} W5QRX| ||| ||¡S)Nz Resent-Dater%rPzResent-z0message has more than one 'Resent-' header blockZSenderÚFromrcSsg|]}|dk r|‘qSrr)r¡ÚfrrrrǼsýz%SMTP.send_message..ÚToZBccZCccSsg|] }|d‘qS)rPr)r¡ÚarrrrÇÀsz Resent-BccFr9r 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=8BITMIMEr)Úlinesep)rêrë)r´Zget_allr}rar'r(Z getaddressesÚcopyrrlÚUnicodeEncodeErrorr›rÚioÚBytesIOÚ generatorZBytesGeneratorréZcloneZflattenÚgetvaluerã)rrrßràrárâZresentZ header_prefixZ addr_fieldsZmsg_copyZ internationalZbytesmsgÚgZflatmsgrrrÚ send_messageŽsX   ÿ þ  þ  ÿ   ÿ   ÿzSMTP.send_messagecCs<z|j}d|_|r| ¡W5|j}d|_|r6| ¡XdSr)rerCrQ)rrerQrrrrCÛs z SMTP.closecCs.| d¡}d|_|_i|_d|_| ¡|S)NÚquitF)rKrŒr†r>r�rC)rÚresrrrrõès   z SMTP.quit)r[rN)r%)r%)r%)r%)r%)r)r)N)N)N)NNN)rr)NNrr)1rrrrNrerQr†r‹rŒr�Ú SMTP_PORTrcrEÚ_GLOBAL_DEFAULT_TIMEOUTr rIrMrOrXrZrBrnrtrfrKr…r8r›rœr�ržrŸr¤r¨r5r±r®r²r´r‰rÂrÃrÅrËrÌrãrôrCrõrrrrr¾sfþ 0   ! 1  3    0  B 8ÿ hÿ M c@s4eZdZeZdddddejddfdd„Zdd„ZdS)ÚSMTP_SSLr%rNc Cs–|dk r|dk rtdƒ‚|dk r0|dk r0tdƒ‚|dk s@|dk rVddl} |  dtd¡||_||_|dkrxtj||d�}||_t   ||||||¡dS)NrÍrÎrrÏrÄrÐ) rarÖr×rØrÒrÑrÙrÚrÜrr ) rrFrGrDrÒrÑr=r@rÜrÖrrrr s(ÿÿÿzSMTP_SSL.__init__cCsD|jdkr| d||f¡t ||f||j¡}|jj||jd�}|S)Nrr]rÓ)rNrXrErYr@rÜrÛr<)rrFrGr=Z new_socketrrrrZs  ÿÿzSMTP_SSL._get_socket) rrrÚ SMTP_SSL_PORTrcrErør rZrrrrrùôsý rùiÓc@s,eZdZdZdeddfdd„Zd dd „ZdS) ÚLMTPZlhlor%NcCstj|||||d�dS)N)rDr@)rr )rrFrGrDr@rrrr ;s ÿz LMTP.__init__r[rcCs´|ddkrtj||||d�Sz(t tjtj¡|_d|_|j |¡WnBtk rˆ|jdkrl|  d|¡|jr||j  ¡d|_‚YnX|  ¡\}}|jdkr¬|  d|¡||fS)Nrú/)r@z connect fail:r]) rrBrEZAF_UNIXZ SOCK_STREAMrerQrbrNrXrCrf)rrFrGr@rrrrrrBAs"       z LMTP.connect)r[rN)rrrr‹Ú LMTP_PORTr rBrrrrrû+s ÿ rûÚ__main__cCs(tj |d¡tj ¡tj ¡ ¡S)Nz: )rUÚstdoutÚwriteÚflushÚstdinr{r*)Úpromptrrrr[s rräræú,zEnter message, end with ^D:r%zMessage length is %dr[rP)@rErïr1Z email.utilsr'Z email.messageZemail.generatorr»r¿rírSrUZemail.base64mimerrºÚ__all__r÷rúr3r«r|r¼ÚcompileÚIr�rbrrrrrrr r r r r r.rr6r7rÙÚ ImportErrorrÔrrùr~rýrûrrZfromaddrr�ZtoaddrsrRrrr{r�r}ZserverrOrãrõrrrrÚ,s˜ ý      :0 /