@@ -2,7 +2,8 @@ import { NextRequest, NextResponse } from 'next/server';
22import { Resend } from 'resend' ;
33import { z } from 'zod' ;
44import EmailTemplate from '@/components/emails/EmailTemplate' ;
5- import { renderToStaticMarkup } from 'react-dom/server' ; // Usamos react-dom/server
5+ import { render } from '@react-email/render' ; // Usaremos render de @react -email/render
6+ import React from 'react' ; // Importar React para el tipado
67
78const resend = new Resend ( process . env . RESEND_API_KEY ) ;
89
@@ -34,16 +35,15 @@ export async function POST(req: NextRequest) {
3435
3536 const { name, email, message } = parsed . data ;
3637
37- // 3. Renderizar el componente de React a un string de HTML estático
38- // Forzamos el tipo a 'any' temporalmente para evitar conflictos de tipado con componentes de servidor
39- const emailHtml = renderToStaticMarkup ( EmailTemplate ( { name, email, message } ) as any ) ;
38+ // 3. Renderizar el componente de React a un string de HTML (ahora con await)
39+ const emailHtml = await render ( EmailTemplate ( { name, email, message } ) as React . ReactElement ) ;
4040
4141 // 4. Enviar el correo con Resend usando la propiedad 'html'
4242 const { data, error } = await resend . emails . send ( {
4343 from : 'Portfolio Contact <onboarding@resend.dev>' , // Dominio verificado en Resend
4444 to : [ 'ing.javiernuma@gmail.com' ] ,
4545 subject : `Nuevo mensaje de ${ name } desde tu portafolio` ,
46- html : emailHtml , // Usamos la propiedad 'html' con el string renderizado
46+ html : emailHtml , // Ahora emailHtml es un string resuelto
4747 text : `Nombre: ${ name } \nEmail: ${ email } \nMensaje: ${ message } ` , // Versión de texto plano
4848 } ) ;
4949
0 commit comments