a
    bg                     @   s   d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ G d	d
 d
eZG dd deZdS )zSend Gmail messages.    N)MIMEMultipart)MIMEText)AnyDictListOptionalTypeUnion)CallbackManagerForToolRun)	BaseModelField)GmailBaseToolc                   @   s   e Zd ZU dZedddZeed< edddZe	ee
e f ed< edddZeed	< ed
ddZee	ee
e f  ed< ed
ddZee	ee
e f  ed< d
S )SendMessageSchemazInput for SendMessageTool..zThe message to send.)descriptionmessagezThe list of recipients.tozThe subject of the message.subjectNzThe list of CC recipients.cczThe list of BCC recipients.bcc)__name__
__module____qualname____doc__r   r   str__annotations__r   r	   r   r   r   r   r    r   r   z/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/tools/gmail/send_message.pyr      s*   
r   c                
   @   s   e Zd ZU dZdZeed< dZeed< eZ	e
e ed< deeeee f eeeeee f  eeeee f  eeef dd	d
Zdeeeee f eeeeee f  eeeee f  ee edddZdS )GmailSendMessagez#Tool that sends a message to Gmail.Zsend_gmail_messagenamezJUse this tool to send email messages. The input is the message, recipientsr   args_schemaN)r   r   r   r   r   returnc                 C   s   t  }|t|d dt|tr(|n|g|d< ||d< |durbdt|trV|n|g|d< |durdt|tr||n|g|d< t| 	 }d|iS )	zCreate a message for an email.htmlz, ToSubjectNCcZBccraw)
r   attachr   join
isinstancelistbase64urlsafe_b64encodeas_bytesdecode)selfr   r   r   r   r   Zmime_messageZencoded_messager   r   r   _prepare_message0   s    	z!GmailSendMessage._prepare_message)r   r   r   r   r   run_managerr    c              
   C   s|   zD| j |||||d}| j  jd|d}| }	d|	d  W S  tyv }
 ztd|
 W Y d}
~
n
d}
~
0 0 dS )zRun the tool.)r   r   me)ZuserIdbodyzMessage sent. Message Id: idzAn error occurred: N)r/   Zapi_resourceZusersmessagessendexecute	Exception)r.   r   r   r   r   r   r0   Zcreate_messagesend_messageZsent_messageerrorr   r   r   _runG   s    
zGmailSendMessage._run)NN)NNN)r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r/   r
   r:   r   r   r   r   r   '   s6   

  
   r   )r   r*   Zemail.mime.multipartr   Zemail.mime.textr   typingr   r   r   r   r   r	   Zlangchain_core.callbacksr
   Zpydanticr   r   Z$langchain_community.tools.gmail.baser   r   r   r   r   r   r   <module>   s    