(data: ProcessedEmailData)
| 103 | } |
| 104 | |
| 105 | async function dispatchWithFallback(data: ProcessedEmailData): Promise<SendEmailResult> { |
| 106 | let lastError: unknown |
| 107 | for (const provider of activeProviders) { |
| 108 | try { |
| 109 | return await provider.send(data) |
| 110 | } catch (error) { |
| 111 | lastError = error |
| 112 | logger.warn(`${provider.name} failed, trying next provider`, error) |
| 113 | } |
| 114 | } |
| 115 | logger.error('All email providers failed', lastError) |
| 116 | return { |
| 117 | success: false, |
| 118 | message: `All email providers failed: ${getErrorMessage(lastError, 'unknown error')}`, |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | interface PreparedBatchEntry { |
| 123 | index: number |
no test coverage detected