176 lines
No EOL
5.5 KiB
Python
176 lines
No EOL
5.5 KiB
Python
"""
|
|
Outlook method module.
|
|
Handles Outlook operations using the Outlook service.
|
|
"""
|
|
|
|
import logging
|
|
from typing import Dict, Any, List, Optional
|
|
from datetime import datetime
|
|
|
|
from modules.interfaces.interfaceOutlook import OutlookService
|
|
from modules.methods.methodBase import MethodBase, MethodResult, action
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class MethodOutlook(MethodBase):
|
|
"""Outlook method implementation"""
|
|
|
|
def __init__(self, serviceContainer):
|
|
"""Initialize the Outlook method"""
|
|
super().__init__(serviceContainer)
|
|
self.outlookService = OutlookService(serviceContainer)
|
|
|
|
@action
|
|
async def readMails(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Read emails from Outlook
|
|
|
|
Args:
|
|
parameters:
|
|
folder: Folder to read from (default: inbox)
|
|
query: Search query
|
|
maxResults: Maximum number of results
|
|
includeAttachments: Whether to include attachments
|
|
"""
|
|
try:
|
|
folder = parameters.get("folder", "inbox")
|
|
query = parameters.get("query")
|
|
maxResults = parameters.get("maxResults", 10)
|
|
includeAttachments = parameters.get("includeAttachments", False)
|
|
|
|
# Read emails
|
|
emails = await self.outlookService.readEmails(
|
|
folder=folder,
|
|
query=query,
|
|
maxResults=maxResults,
|
|
includeAttachments=includeAttachments
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"folder": folder,
|
|
"query": query,
|
|
"emails": emails
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error reading emails: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def sendMail(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Send email using Outlook
|
|
|
|
Args:
|
|
parameters:
|
|
to: List of recipient email addresses
|
|
subject: Email subject
|
|
body: Email body
|
|
attachments: List of attachment file IDs
|
|
"""
|
|
try:
|
|
to = parameters["to"]
|
|
subject = parameters["subject"]
|
|
body = parameters["body"]
|
|
attachments = parameters.get("attachments", [])
|
|
|
|
# Send email
|
|
messageId = await self.outlookService.sendEmail(
|
|
to=to,
|
|
subject=subject,
|
|
body=body,
|
|
attachments=attachments
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"messageId": messageId,
|
|
"to": to,
|
|
"subject": subject
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error sending email: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def createFolder(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Create folder in Outlook
|
|
|
|
Args:
|
|
parameters:
|
|
name: Folder name
|
|
parentFolder: Parent folder ID (optional)
|
|
"""
|
|
try:
|
|
name = parameters["name"]
|
|
parentFolder = parameters.get("parentFolder")
|
|
|
|
# Create folder
|
|
folderId = await self.outlookService.createFolder(
|
|
name=name,
|
|
parentFolder=parentFolder
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"folderId": folderId,
|
|
"name": name,
|
|
"parentFolder": parentFolder
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error creating folder: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def moveMail(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Move email to different folder
|
|
|
|
Args:
|
|
parameters:
|
|
messageId: ID of the message to move
|
|
targetFolder: ID of the target folder
|
|
"""
|
|
try:
|
|
messageId = parameters["messageId"]
|
|
targetFolder = parameters["targetFolder"]
|
|
|
|
# Move email
|
|
await self.outlookService.moveEmail(
|
|
messageId=messageId,
|
|
targetFolder=targetFolder
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"messageId": messageId,
|
|
"targetFolder": targetFolder
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error moving email: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
) |