B
    Pc                 @   s   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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
 ZdddZdddZdd ZdS )    N)encoders)MIMEBase)ValidationError)validate_email)gettext_lazy)AdminRuntimeWarning)SystemSettingc          	   C   s~   xxt | D ]j\}}t|t jr,ttd|d kr6qyx|D ]}t| q>W W q tk
rt   ttdddY qX qW d S )Nz0`email address`_argument_must_be_a_list_or_tupleZillegal_email_addressZinvalid)code)sixZ	iteritems
isinstanceZstring_types	TypeError_r   r   )Zaddress_dictZ	addr_typeZ	addressesZaddr r   CG:\easytimepro\master/mysite/admin\services\email\email_services.py_check_email_address   s    
r   c
             C   s   g }
|	r|	ng }	xr|	D ]j}t |dV}tj|d }tdd|d}|jdd|d ||  t	| |

| W dQ R X qW t| |||ddddd|
d	
 dS )
z3
    attachments: must be value file path list
    rb   textZtxt)filenamezContent-Disposition
attachmentN)
company_idcontextto_ccto_bccsubject_template_namecontent_template_nameattachments)openospathsplitr   Z
add_headerZset_payloadreadr   Zencode_base64appendsend_one_mail)subjectbodytor   r   r   r   r   r   r   Znew_attachmentsr   fnameZmimer   r   r   send_one_mail_with_attachments#   s    

r)   c
          
   C   sl  ddl m}
 ddlm} ddlm}m} tjj	d|dj
ddd	}| sZttd
 dS t|d }|d}t|||d |dkrt }|dk	r|
||} d|  } |	r|	ng }	dd |	D }	|| d|||||	d}|dk	r|
||}n|}||d y"| }|| |  || W n< tjk
rf } ztt|t|dW dd}~X Y nX dS )z?
    attachments: must be email.MIMEBase.MIMEBase obj list
    r   )loader)EmailMultiAlternatives)set_current_company_idget_current_company_idemail_setting)r(   r   valueT)ZflatZ please_setup_email_setting_firstNZemail_address)r&   r   r    c             S   s   g | ]}t |tr|qS r   )r   r   ).0ir   r   r   
<listcomp>`   s    z!send_one_mail.<locals>.<listcomp>r%   )r&   ZccZbccr   z	text/html)typerepr)Zdjango.templater*   Zdjango.core.mailr+   Zmysite.base.threadlocalsr,   r-   r   objectsfilterZvalues_listexistsprintr   jsonloadsgetr   dictZrender_to_stringjoin
splitlinesZattach_alternativesendsmtplibZSMTPExceptionr   r4   str)r$   r%   r&   r   r   r   r   r   r   r   r*   r+   r,   r-   ZesZ
from_emailZemail_messageZhtml_contentZtemp_company_ider   r   r   r#   <   sD    

r#   c              C   sR   t jjdd} | rBt| d jdg}d}d}t||| dS td d	S d
S )z1
    test email setting correct
    :return:
    r.   )r(   r   Zemail_accountz
Test EmailzTest Email BodyTzemail setting errorFN)	r   r6   r7   r:   r;   r/   r<   r#   r9   )Zown_mailr&   r$   r%   r   r   r   send_one_mail_to_selfu   s    rD   )NNNNNNN)NNNNNNN)r   r:   rA   Zemailr   Zemail.mime.baser   r
   Zdjango.core.exceptionsr   Zdjango.core.validatorsr   Zdjango.utils.translationr   r   Zmysite.admin.exceptionsr   Zmysite.base.modelsr   r   r)   r#   rD   r   r   r   r   <module>   s$     
  
6