[docs]classCreateDraftMessageSchema(BaseModel):"""Input for SendMessageTool."""body:str=Field(...,description="The message body to include in the draft.",)to:List[str]=Field(...,description="The list of recipients.",)subject:str=Field(...,description="The subject of the message.",)cc:Optional[List[str]]=Field(None,description="The list of CC recipients.",)bcc:Optional[List[str]]=Field(None,description="The list of BCC recipients.",)
[docs]classO365CreateDraftMessage(O365BaseTool):# type: ignore[override, override]"""Tool for creating a draft email in Office 365."""name:str="create_email_draft"description:str=("Use this tool to create a draft email with the provided message fields.")args_schema:Type[CreateDraftMessageSchema]=CreateDraftMessageSchemadef_run(self,body:str,to:List[str],subject:str,cc:Optional[List[str]]=None,bcc:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForToolRun]=None,)->str:# Get mailbox objectmailbox=self.account.mailbox()message=mailbox.new_message()# Assign message valuesmessage.body=bodymessage.subject=subjectmessage.to.add(to)ifccisnotNone:message.cc.add(cc)ifbccisnotNone:message.bcc.add(bcc)message.save_draft()output="Draft created: "+str(message)returnoutput