enviar qr y html

This commit is contained in:
Your Name
2025-04-03 11:17:00 -06:00
parent 557beeab60
commit afa6743b47
2 changed files with 42 additions and 6 deletions
+10 -5
View File
@@ -31,7 +31,7 @@ export class MailController {
@ApiSendMail()
async sendMail(
@Headers() headers:{password:string},
@Body() body: { to: string; subject: string; text: string; fecha_recibido: Date }) {
@Body() body: { to: string; subject: string; text: string; fecha_recibido: Date, html:string, adjuntos:any }) {
/*
@@ -49,10 +49,15 @@ export class MailController {
throw new UnauthorizedException('Password incorrecto');
} */
const { to, subject, text, fecha_recibido } = body;
console.log("estos son los archivos adjuntos en el controller",body);
const result = await this.mailService.sendMail(to, subject, text, fecha_recibido,1); // sistem
const { to, subject, text, html, fecha_recibido, adjuntos } = body;
const result = await this.mailService.sendMail(to, subject, text,html, fecha_recibido,1,adjuntos); // sistem
return result;
@@ -84,7 +89,7 @@ export class MailController {
for (const email of await emails) {
try {
await this.mailService.sendMail(email, "subject", "text", fechaActual,sistem);
await this.mailService.sendMail(email, "subject", "text","html", fechaActual,sistem);
console.log(`📧 Enviado a: ${email}`);
} catch (error) {
console.error(`❌ Error enviando a ${email}:`, error.message);
+32 -1
View File
@@ -42,14 +42,45 @@ export class MailService {
// Función para generar el reporte de correos enviados y fallidos
async sendMail(to: string, subject: string, text: string, fecha_recibido: Date, sistema) {
async sendMail(to: string, subject: string, text: string, html: string, fecha_recibido: Date, sistema, adjuntos?: any[] ) {
console.log("estos son los archivos adjuntos en el service",adjuntos);
const mailOptions = {
from: process.env.USER_GMAIL,
to,
subject,
text,
html,
// OJO: nodemailer usa 'attachments', no 'adjuntos'
attachments: (adjuntos || []).map((adj) => {
// Asegúrate de no incluir 'data:image/png;base64,' en 'content'
let base64Clean = adj.content;
// Si viene con prefijo "data:image...", lo quitamos
if (base64Clean.startsWith('data:image/')) {
base64Clean = base64Clean.split('base64,')[1];
}
return {
filename: adj.filename || 'qr.png',
content: Buffer.from(base64Clean, adj.encoding || 'base64'),
cid: adj.cid || 'qrCode', // el mismo que uses en <img src="cid:..."/>
contentType: 'image/png' // recomendable para que sepa que es PNG
};
})
};
console.log(mailOptions);
let resMail = await this.transporter.sendMail(mailOptions);
const statusTexto = resMail.accepted.length > 0 ? "Enviado" : "Fallido";