Files
paperlessmanager/paperless-backend/src/postprocessing/mail.service.ts
T
2026-05-06 08:48:42 +02:00

46 lines
1.4 KiB
TypeScript

import { Injectable, Logger } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import * as nodemailer from 'nodemailer';
@Injectable()
export class MailService {
private readonly logger = new Logger(MailService.name);
private transporter: nodemailer.Transporter;
constructor(private readonly configService: ConfigService) {
this.transporter = nodemailer.createTransport({
host: this.configService.get<string>('SMTP_HOST', ''),
port: this.configService.get<number>('SMTP_PORT', 587),
secure: this.configService.get<string>('SMTP_SECURE', 'false') === 'true',
auth: {
user: this.configService.get<string>('SMTP_USER', ''),
pass: this.configService.get<string>('SMTP_PASS', ''),
},
});
}
async sendMail(options: {
to: string;
subject: string;
body: string;
html?: string;
attachments?: { filename: string; content: Buffer }[];
}): Promise<void> {
const from = this.configService.get<string>('SMTP_FROM', 'paperless@localhost');
await this.transporter.sendMail({
from,
to: options.to,
subject: options.subject,
text: options.body,
html: options.html,
attachments: options.attachments?.map(a => ({
filename: a.filename,
content: a.content,
})),
});
this.logger.log(`Mail gesendet an ${options.to}: "${options.subject}"`);
}
}