96 lines
4.7 KiB
JavaScript
96 lines
4.7 KiB
JavaScript
"use strict";
|
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
};
|
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.MailService = void 0;
|
|
const common_1 = require("@nestjs/common");
|
|
const nodemailer = require("nodemailer");
|
|
const config_1 = require("@nestjs/config");
|
|
const path = require("path");
|
|
let MailService = class MailService {
|
|
constructor(configService) {
|
|
this.configService = configService;
|
|
this.transporter = nodemailer.createTransport({
|
|
host: this.configService.get('SMTP_HOST'),
|
|
port: this.configService.get('SMTP_PORT'),
|
|
secure: this.configService.get('SMTP_SECURE') === 'true',
|
|
auth: {
|
|
user: this.configService.get('SMTP_USER'),
|
|
pass: this.configService.get('SMTP_PASS'),
|
|
},
|
|
});
|
|
}
|
|
async sendTicket(email, name, ticketId, eventName, qrCodeBuffer) {
|
|
const logoPath = path.join(process.cwd(), 'dist/assets/atiw-out-logo.svg');
|
|
const firstName = name.split(' ')[0];
|
|
await this.transporter.sendMail({
|
|
from: this.configService.get('SMTP_FROM') || '"Event Team" <noreply@example.com>',
|
|
to: email,
|
|
subject: `Dein Ticket fürs ATIW OUT!`,
|
|
html: `
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #f4f4f5; margin: 0; padding: 0; }
|
|
.container { max-width: 600px; margin: 32px auto; background-color: #ffffff; border-radius: 8px; overflow: hidden; border: 1px solid rgba(0, 0, 0, 0.2); padding: 32px; }
|
|
.header { background-color: #ffffff; text-align: center; }
|
|
.logo { height: 150px;}
|
|
.content {text-align: center; color: #333333; }
|
|
.greeting { font-size: 32px; color: #18181b; }
|
|
.text { font-size: 16px; line-height: 1.5; color: #52525b;}
|
|
.qr-container { background-color: #f4f4f5; padding: 24px; border-radius: 12px; display: inline-block; margin: 32px 0px; }
|
|
.footer { background-color: #fafafa; padding: 24px; text-align: center; font-size: 14px; color: #a1a1aa; border-top: 1px solid #e4e4e7; }
|
|
.highlight { color: #2563eb; font-weight: 600; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<img src="cid:logo" alt="Logo" class="logo" />
|
|
</div>
|
|
<div class="content">
|
|
<h2 class="greeting">Moin ${firstName},</h2>
|
|
<p class="text">Hier ist dein Ticket für das <strong>ATIW OUT</strong>!</p>
|
|
<p class="text">Zeig diesen QR Code einfach am <strong>09.12.</strong> am Eingang vor.</p>
|
|
|
|
<div class="qr-container">
|
|
<img src="cid:qrcode" width="200" height="200" alt="Dein Ticket QR Code" style="display: block;"/>
|
|
</div>
|
|
|
|
<p class="text">Wir wünschen dir viel Spaß!</p>
|
|
<p class="text">~FI231 & FS231</p>
|
|
<p class="text" style="margin-top: 32px;">Bei Fragen oder Problemen komm bitte<br>zum Klassenraum <strong>E.07</strong> und frag nach <strong>Jason</strong></p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
`,
|
|
attachments: [
|
|
{
|
|
filename: 'qrcode.png',
|
|
content: qrCodeBuffer,
|
|
cid: 'qrcode',
|
|
},
|
|
{
|
|
filename: 'logo.svg',
|
|
path: logoPath,
|
|
cid: 'logo',
|
|
},
|
|
],
|
|
});
|
|
}
|
|
};
|
|
exports.MailService = MailService;
|
|
exports.MailService = MailService = __decorate([
|
|
(0, common_1.Injectable)(),
|
|
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
], MailService);
|
|
//# sourceMappingURL=mail.service.js.map
|