3 \)@s:ddlZddlZddlZddlZddlmZGdddZeZd%ddZej ded d Z xd j D]Z ej e e qhWd d Z x dj D]Zej dee qWddZej deddZddZddZddZd&ddZejeed'd d!Zejejjed(d#d$Zx eeefD]Zejeeq WdS))N) quoprimimec@s<eZdZddZddZddZddZd d Zd d Zd S)ContentManagercCsi|_i|_dS)N) get_handlers set_handlers)selfr,/usr/lib64/python3.6/email/contentmanager.py__init__ szContentManager.__init__cCs||j|<dS)N)r)rkeyhandlerrrradd_get_handler szContentManager.add_get_handlercOs||j}||jkr(|j||f||S|j}||jkrP|j||f||Sd|jkrp|jd|f||St|dS)N)Zget_content_typerget_content_maintypeKeyError)rmsgargskwZ content_typemaintyperrr get_contents   zContentManager.get_contentcCs||j|<dS)N)r)rZtypekeyr rrradd_set_handlerszContentManager.add_set_handlercOs>|jdkrtd|j||}|j|||f||dS)NZ multipartz"set_content not valid on multipart)r TypeError_find_set_handlerZ clear_content)rrobjrrr rrr set_contents   zContentManager.set_contentc Csd}xt|jD]}||jkr(|j|S|j}t|dd}|rLdj||fn|}|dkr\|}||jkrp|j|S||jkr|j|S|j}||jkr|j|SqWd|jkr|jdSt|dS)N __module__r .)type__mro__r __qualname__getattrjoin__name__r) rrrZfull_path_for_errortypZqnamemodname full_pathnamerrrr's&          z ContentManager._find_set_handlerN) r!rrr r rrrrrrrrrs   rreplacecCs&|jdd}|jdd}|j||dS)NT)decodecharsetASCII)errors) get_payloadZ get_paramr')rr*Zcontentr(rrrget_text_content@s  r,textcCs |jddS)NT)r')r+)rrrrget_non_text_contentGsr.zaudio image video applicationcCs |jdS)Nr)r+)rrrrget_message_contentMsr/zrfc822 external-bodyzmessage/cCst|jdS)Nr)bytesr+)rrrr%get_and_fixup_unknown_message_contentSsr1messagecsdj||f|d<|rt|dds<|jfdd|D}y,x&|D]}|jrX|jd|||j<qDWWn@tjjk r}z tdj |j |jd|WYdd}~XnXdS) N/z Content-Typerr%csg|]}jj|gqSr)Zheader_factoryZheader_source_parse).0header)mprr dsz _prepare_set..zInvalid header: {})policy) r hasattrr8Zdefectsr%emailr*Z HeaderDefect ValueErrorformatZfold)rrsubtypeheadersr5excr)r6r _prepare_set_s   r@cCs||dkr|dk rd}|dk r$||d<|dk r>|jd|ddd|dk rN||d<|dk rxx |jD]\}}|j||q`WdS)NZ attachmentzContent-DispositionfilenameT)r5r&z Content-ID) set_paramitems)r dispositionrAcidparamsr valuerrr _finalize_setpsrHcCsZg}|dd}x>tdt||D]*}||||}|jtj|jdq"Wdj|S)Nrasciir )rangelenappendbinascii b2a_base64r'r )datamax_line_lengthZ encoded_linesZunencoded_bytes_per_lineiZthislinerrr_encode_base64s  rTc s||j|j}|jjdfdd}dd}|dkryd||jdfStk r\YnX|jdkrtdd |D|jkrd||jdd fS||dd }tj |jd |j}t j |} t |t | krd }nd}t |d kr||fS|dkr ||jd} nj|dkr&||jdd } nN|dkrJtj ||jd |j} n*|d krft |||j} ntdj||| fS)NrKcsj|S)N)r )lines)lineseprr embedded_bodysz#_encode_text..embedded_bodycSsdj|dS)N )r )rUrrr normal_bodysz!_encode_text..normal_body7bit8bitcss|]}t|VqdS)N)rM)r4xrrr sz_encode_text..surrogateescape zlatin-1base64zquoted-printablez$Unknown content transfer encoding {})encode splitlinesrVr'UnicodeDecodeErrorZcte_typemaxrRrZ body_encoderOrPrMrTr;r<) stringr(cter8rUrWrYZsniffZsniff_qpZ sniff_base64rQr)rVr _encode_texts@           rgplainutf-8c Csdt|d|| t||||j\}} |j| |jdtjjj||dd||d<t |||||dS)Nr-r(T)r&zContent-Transfer-Encoding) r@rgr8 set_payloadrBr:r(ZALIASESgetrH) rrer=r(rfrDrArErFr>Zpayloadrrrset_text_contents rlrfc822c Cs|dkrtd|dkr@|d kr.tdj||dkr:dn|}n0|dkrd|d kr^td j|d}n |dkrpd}t|d |||j|g||d <t|||||dS)Npartialz4message/partial is not supported for Message objectsrmrZr[binaryz*message/rfc822 parts do not support cte={}z external-bodyz1message/external-body parts do not support cte={}r2zContent-Transfer-Encoding)NrZr[ro)NrZ)r;r<r@rjrH) rr2r=rfrDrArErFr>rrrset_message_contents$   rpr`c Cst|||| |dkr(t||jjd}nN|dkrNtj|dddd}|jd}n(|dkrb|jdn|d krv|jdd }|j|||d <t |||||dS)Nr`)rRzquoted-printableFT)istextr5Z quotetabsrKrZr[ror^zContent-Transfer-Encoding)r[ro) r@rTr8rRrOZb2a_qpr'rarjrH) rrQrr=rfrDrArErFr>rrrset_bytes_contents    rr)r&)rhriNNNNNN)rmNNNNNN)r`NNNNN)rOZ email.charsetr:Z email.messageZ email.errorsrrZraw_data_managerr,r r.splitrr/r=r1r@rHrTrgrlrstrrpr2ZMessagerrr0 bytearray memoryviewr"rrrrsD 6   '