import { Injectable } from '@nestjs/common'; import { Client } from '@microsoft/microsoft-graph-client'; import { IntegrationStrategy, IntegrationResult, } from '../integration.strategy'; @Injectable() export class OutlookStrategy implements IntegrationStrategy { async sendMessage( to: string, message: string, config: any, ): Promise { try { const { accessToken } = config; const graphClient = Client.init({ authProvider: { getAccessToken: async () => accessToken, } as any, }); const subject = config.subject || 'Notification'; const mail = { message: { subject, body: { contentType: config.html ? 'HTML' : 'Text', content: config.html || message, }, toRecipients: [ { emailAddress: { address: to, }, }, ], }, }; await graphClient.api('/me/sendMail').post(mail); return { success: true, provider: 'outlook', service: 'API', timestamp: new Date(), }; } catch (error) { return { success: false, provider: 'outlook', service: 'API', error: error.message, timestamp: new Date(), }; } } validateConfig(config: any): boolean { return !!config.accessToken; } }