
    U%g                        d dl Z d dlZd dlZd dlZd dlmZ  e              ej        d          Z ej        d          Z ej        d          Z	 ej        d          Z
de	 ZdgZd	Zd
Z ej        eej        d           d Zd Zd Zedk    r-dZdZdZ eeee          r ed           dS  ed           dS dS )    N)load_dotenvEMAIL_CLIENT_IDEMAIL_CLIENT_SECRETEMAIL_TENANT_IDEMAIL_SENDERz"https://login.microsoftonline.com/z$https://graph.microsoft.com/.defaultz&https://graph.microsoft.com/v1.0/userszemail_debug.logz)%(asctime)s - %(levelname)s - %(message)s)filenamelevelformatc                     	 t          j        d           t          j        t          t
          t                    } |                     t                    }d|v rt          j        d           |d         S |	                    d          }|	                    d          }t          j
        d| d	|            d
S # t          $ r"}t          j        d|            Y d
}~d
S d
}~ww xY w)u9    Obtém um token de acesso OAuth2 da Microsoft Graph API u:   🔵 Solicitando token de acesso ao Microsoft Graph API...)	authorityclient_credential)scopesaccess_tokenu'   ✅ Token de acesso obtido com sucesso!errorerror_descriptionu   ❌ Erro ao obter token: z - Nu%   ❌ Exceção ao tentar obter token: )logginginfomsalConfidentialClientApplication	CLIENT_ID	AUTHORITYCLIENT_SECRETacquire_token_for_clientSCOPEgetr   	Exception	exception)appresultr   
error_desces        (/var/www/html/cag/reuniao/email_utils.pyget_access_tokenr#      s   QRRR0+
 
 

 --U-;;V##LBCCC.))JJw''E$788JMLeLL
LLMMM4   E!EEFFFttttts   A4B= 7AB= =
C)C$$C)c                 n   t            dt           d}ddd}d| dd}	 t          j        |||	          }t	          j        d
|j         d|j                    |j        dk    r{|                                                    dg           }|D ]6}|                    d          | k    rt	          j	        d|  d            dS 7t	          j
        d|  d           dS t	          j
        d|j         d|j                    dS # t          $ r"}t	          j        d|            Y d}~dS d}~ww xY w)u   
    Consulta a caixa de enviados do usuário para verificar se um e-mail com o assunto
    especificado foi realmente enviado.
    /z/mailFolders/SentItems/messages
   zsentDateTime desc)z$topz$orderbyBearer application/jsonAuthorizationzContent-Type)headersparamsu-   🔹 Verificando mensagens enviadas: Código     | Conteúdo:    valuesubjectu1   ✅ Verificado no Azure: O e-mail com o assunto 'z&' foi encontrado na caixa de enviados.Tu   ❌ E-mail com o assunto 'u+   ' não foi encontrado na caixa de enviados.Fu3   ❌ Erro ao consultar a caixa de enviados: Código , Resposta: u7   ❌ Exceção ao tentar consultar a caixa de enviados: N)GRAPH_API_URLr   requestsr   r   debugstatus_codetextjsonr   r   r   r   )	r0   r   urlr,   r+   responsemessagesmessager!   s	            r"   check_sent_emailr<   2   s   
 
J
J\
J
J
JC' F
 2<11* G<WVDDDyhFZyyjrjwyyzzz3&&}}**7B77H#    ;;y))W44L  "EU\  "E  "E  "E  F  F  F44 5 Mkwkkklll5M  BPXPd  B  Brzr  B  B  C  C  C5   WTUWWXXXuuuuus$   B$D D "$D 
D4D//D4c                 t   t                      }|st          j        d           dS t           dt           d}d| dd}t          |t                    rd |                    d	          D             }| d
|dd |D             ddd}	 t          j        dd	                    |           d|             t          j
        d|            t          j        |||          }t          j
        d|j         d|j                    |j        dk    rOt          j        d           t          | |          rt          j        d           nt          j        d           dS t          j        d|j         d|j                    dS # t           $ r"}t          j        d|            Y d}~dS d}~ww xY w)zE Envia um e-mail via Microsoft Graph API e registra os passos no log u?   ❌ Falha ao obter token de acesso. Cancelando envio de e-mail.Fr%   z	/sendMailr'   r(   r)   c                 6    g | ]}|                                 S  )strip).0emails     r"   
<listcomp>zsend_email.<locals>.<listcomp>a   s     GGGekkmmGGG    ,HTML)contentTypecontentc                     g | ]}d d|ii	S )emailAddressaddressr?   )rA   	recipients     r"   rC   zsend_email.<locals>.<listcomp>j   s"    bbb)ny).DEbbbrD   )r0   bodytoRecipientsT)r;   saveToSentItemsu   📤 Enviando e-mail para: z, z | Assunto: u   🔹 Payload do e-mail: )r+   r7   u   🔹 Resposta da API: Código r-      u   ✅ E-mail enviado com sucesso!u@   ✅ A verificação no Azure confirmou que o e-mail foi enviado.uJ   ❌ A verificação no Azure não encontrou o e-mail na caixa de enviados.u$   ❌ Erro ao enviar e-mail. Código: r1   u'   ❌ Exceção ao tentar enviar e-mail: N)r#   r   r   r2   r   
isinstancestrsplitr   joinr4   r3   postr5   r6   r<   r   r   )	r0   rM   
recipientsr   r8   r+   
email_datar9   r!   s	            r"   
send_emailrX   R   s/   #%%L WXXXu
4
4\
4
4
4C1<11* G *c"" HGG1A1A#1F1FGGG
 %  cbWabbb
 
  
 
J_499Z3H3H__V]__```===>>>=gJGGGjx7Kjj[c[hjjkkk3&&L:;;;66 l_````jkkk4MrAUrrckcprrsss5   GAGGHHHuuuuus   CF %$F 
F7F22F7__main__z'Teste de E-mail via Microsoft Graph APIu-   <h3>Este é um teste de envio de e-mail.</h3>z0glassto@gmail.com, fabiano.alves@grfgraph.com.brz=E-mail enviado com sucesso e verificado na caixa de enviados!uP   Falha no envio ou verificação do e-mail. Confira os logs em 'email_debug.log'.)r   r3   osr   dotenvr   getenvr   r   	TENANT_IDr   r   r   r2   LOG_FILEbasicConfigDEBUGr#   r<   rX   __name__r0   rM   rV   printr?   rD   r"   <module>rc      sq     				         BI'((		/00BI'((	ry((<<<		/08   
-6     ,  @1 1 1h z7G:DCJz'4,, bMNNNNN`aaaaa rD   