Adding error ntfy on email client error
This commit is contained in:
parent
d9b62e6c6a
commit
5a90d16872
3 changed files with 18 additions and 1 deletions
|
|
@ -2,6 +2,7 @@ import { Inject, Injectable } from '@nestjs/common'
|
||||||
import { ConfigService } from '@nestjs/config'
|
import { ConfigService } from '@nestjs/config'
|
||||||
import * as Imap from 'imap'
|
import * as Imap from 'imap'
|
||||||
import { MailParser, ParsedEmail } from 'mailparser-mit'
|
import { MailParser, ParsedEmail } from 'mailparser-mit'
|
||||||
|
import { NtfyProvider } from 'src/ntfy/provider'
|
||||||
|
|
||||||
import { LoggerService } from '../logger/service.logger'
|
import { LoggerService } from '../logger/service.logger'
|
||||||
import { Email } from './types'
|
import { Email } from './types'
|
||||||
|
|
@ -23,6 +24,9 @@ export class EmailClient {
|
||||||
@Inject(LoggerService)
|
@Inject(LoggerService)
|
||||||
private readonly loggerService: LoggerService,
|
private readonly loggerService: LoggerService,
|
||||||
|
|
||||||
|
@Inject(NtfyProvider)
|
||||||
|
private readonly ntfyProvider: NtfyProvider,
|
||||||
|
|
||||||
@Inject(ConfigService)
|
@Inject(ConfigService)
|
||||||
private readonly configService: ConfigService,
|
private readonly configService: ConfigService,
|
||||||
) {
|
) {
|
||||||
|
|
@ -230,8 +234,9 @@ export class EmailClient {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this.imapClient.on('error', (error: Error) => {
|
this.imapClient.on('error', async (error: Error) => {
|
||||||
this.loggerService.error(`Error with imap client ${error.message}`)
|
this.loggerService.error(`Error with imap client ${error.message}`)
|
||||||
|
await this.ntfyProvider.sendEmailClientErrorNotification(error.message)
|
||||||
this.setStatus(EmailClientStatus.Error)
|
this.setStatus(EmailClientStatus.Error)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import { BullModule } from '@nestjs/bull'
|
||||||
import { Module } from '@nestjs/common'
|
import { Module } from '@nestjs/common'
|
||||||
|
|
||||||
import { LoggerModule } from '../logger/module'
|
import { LoggerModule } from '../logger/module'
|
||||||
|
import { NtfyModule } from '../ntfy/module'
|
||||||
import { EmailClient } from './client'
|
import { EmailClient } from './client'
|
||||||
import { EMAILS_QUEUE_NAME } from './config'
|
import { EMAILS_QUEUE_NAME } from './config'
|
||||||
import { EmailProvider } from './provider'
|
import { EmailProvider } from './provider'
|
||||||
|
|
@ -10,6 +11,7 @@ import { EmailProvider } from './provider'
|
||||||
imports: [
|
imports: [
|
||||||
LoggerModule,
|
LoggerModule,
|
||||||
BullModule.registerQueueAsync({ name: EMAILS_QUEUE_NAME }),
|
BullModule.registerQueueAsync({ name: EMAILS_QUEUE_NAME }),
|
||||||
|
NtfyModule,
|
||||||
],
|
],
|
||||||
providers: [EmailClient, EmailProvider],
|
providers: [EmailClient, EmailProvider],
|
||||||
exports: [EmailClient, EmailProvider],
|
exports: [EmailClient, EmailProvider],
|
||||||
|
|
|
||||||
|
|
@ -131,4 +131,14 @@ export class NtfyProvider implements OnApplicationBootstrap {
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async sendEmailClientErrorNotification(errorMessage: string) {
|
||||||
|
await this.publishQueue.add(
|
||||||
|
...NtfyProvider.defaultJob({
|
||||||
|
title: 'Email client error',
|
||||||
|
message: errorMessage,
|
||||||
|
tags: [MessageTags.exclamation],
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue