o
    /h$                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ ejd  dkZdd Zdd Z				dddZdd Zdd ZdS )    N)MIMEBase)MIMEMultipart)MIMEText)
formatdate)add_dkim_sig_to_message)add_message_id)add_recipients_headers)add_subject)rawinline   c                 C   s   t | tjtjfr|  S d S )N)
isinstancedatetimedate	isoformat)o r   C/var/www/html/myenv/lib/python3.10/site-packages/yagmail/message.pydt_converter   s   r   c                 C   sz   d}t | ttttfrdtj| dtd d } d}|| fS d| jj	v r9z| 
 } W n ty6   |  } Y nw d}|| fS )NFz<pre>   )indentdefaultz</pre>T	DataFrame)r   dictlisttuplesetjsondumpsr   	__class____name__renderAttributeErrorto_html)contentis_marked_upr   r   r   serialize_object   s   r&   Tc              	   C   st  t |ttfs|dur|g}t |ttfs|dur|g}|durH|D ]}t |tjs=tj|s=d}t|j	|t
|dq"|du rD|n|| }|durSdd |D }t||\}}|duredd |D }t }|dury| D ]\}}|||< qp|du sd|vrt |d< td}td	}|d
 || t|| t| ||| t||	|
 d}g }|rd|_|durt||D ]\}}|d dkr1tj|d  t |trt|dkr|D ]}ttt|}|| }q|}ntjt|}ttt|}t
|tkr)|d	||7 }|d dd	| | d	| ||d  q||d  q|d dkrHtj|d  ||d  q|d dvrW||d  q|d sb|!dd}z|d	|7 }t"ry|ryddl#}|$|}W n t%y   |d	|7 }Y nw | | qt&|d|d|' d< |t&d(||d || |durt)|| |S ) zPrepare a MIME messageNzX{a} must be a valid filepath or file handle (instance of io.IOBase). {a} is of type {tp})atpc                 S   s   g | ]}t |qS r   )r&   .0xr   r   r   
<listcomp>I       z#prepare_message.<locals>.<listcomp>c                 S   s   g | ]}|d  qS )   r   r)   r   r   r   r,   M   r-   Datealternativerelatedz-- HTML goes here -- zAThis message is best displayed using a MIME capable email reader.	main_typeimagemime_objectr.   z <img src="cid:{0}" title="{1}"/>z
Content-IDz<{0}>z-- img {0} should be here -- encodingbase64sub_type)htmlplainr%   
z<br>z<div>{0}</div>r   r9   _charset)*r   r   r   ioIOBaseospathisfile	TypeErrorformattypeprepare_contentsr   itemsr   attachr	   r   r   preamblezipemailencodersencode_base64r   lenstrabshashbasenamer   
add_headerappendreplacePY3	premailer	transformUnicodeEncodeErrorr   get_payloadjoinr   )user	useralias	addressessubjectcontentsattachmentsheadersr6   prettify_html
message_idgroup_messagesdkimr'   msghas_included_imagescontent_objectskvmsg_alternativemsg_relatedhtmlstraltstrcontent_objectcontent_stringkey
hashed_refaliasrW   r   r   r   prepare_message)   s   











ru   c                 C   sr   g }d}| d ur5d}| D ](\}}t |tjr!t|ds!d||_t|||}|d dkr/d}|| q||fS )NFr.   namezattachment_{}r3   r4   T)r   r>   r?   hasattrrD   rv   get_mime_objectrT   )r`   r6   mime_objectsrh   unnamed_attachment_idr%   r$   rp   r   r   r   rF      s   
rF   c                 C   s  d d d d | d}z
t jt|}W n ty!   t j|}Y nw t|tk}zt j|}W n tyC   d}tt	t
|}Y n tyM   d}Y nw |sp|rpt|d}d|d< | }W d    n1 sjw   Y  n>t|tjr| }t j|j}d|d< n(d|d< |rt||d|d	< nt|d
|d|d	< d
|d< |d d u rd|d< |S |d d u rt|\}	}
|	d ur|	d\|d< |d< |d d u s|d d ur|d dkrd|d< d|d< t|d |d |d|fd}|| |d dkr|jdd|d ||d	< |S )N)r5   r6   r3   r8   r%   Frbr7   r6   textr3   r<   r5   r9   r8   r:   /applicationzoctet-streamr2   )rv   zContent-Disposition
attachment)filename)r@   rA   rR   rO   rY   rE   r
   rB   
ValueErrorrP   rQ   rC   openreadr   r>   r?   rv   r   	mimetypes
guess_typesplitr   set_payloadrS   )r%   rq   r6   rp   content_nameis_rawis_filefr$   content_type_r5   r   r   r   rx      sh   


rx   )TNTN) r   email.encodersrK   r>   r   r   r@   sysemail.mime.baser   email.mime.multipartr   email.mime.textr   email.utilsr   yagmail.dkimr   yagmail.headersr   r   r	   yagmail.utilsr
   r   version_inforV   r   r&   ru   rF   rx   r   r   r   r   <module>   s4    
t