o
    Zh{                     @   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.)defaultr   cczThe list of BCC recipients.bcc)__name__
__module____qualname____doc__r   r   str__annotations__r   r	   r   r   r   r   r    r   r   d/var/www/html/lang_env/lib/python3.10/site-packages/langchain_google_community/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ded	eeee f d
edeeeee f  deeeee f  deeef fddZ			dded	eeee f d
edeeeee f  deeeee f  dee def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_schemaNr   r   r   r   r   returnc                 C   s   t  }|t|d dt|tr|n|g|d< ||d< |dur1dt|tr+|n|g|d< |durDd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run_managerc              
   C   sl   z"| j |||||d}| j  jd|d}| }	d|	d  W S  ty5 }
 ztd|
 d}
~
ww )zRun the tool.)r   r   me)ZuserIdbodyzMessage sent. Message Id: idzAn error occurred: N)r0   Zapi_resourceZusersmessagessendexecute	Exception)r/   r   r   r   r   r   r1   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   r0   r
   r;   r   r   r   r   r   '   sN   
 


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_google_community.gmail.baser   r   r   r   r   r   r   <module>   s     