import { type NextRequest, NextResponse } from "next/server"; import nodemailer from "nodemailer"; import SMTPTransport from "nodemailer/lib/smtp-transport"; import Mail from "nodemailer/lib/mailer"; export async function POST(request: NextRequest) { const body = (await request.json()) as { email: string; name: string; message: string; }; const { email, name, message } = body; const user = process.env.NEXT_PUBLIC_MY_EMAIL ?? ""; const pass = process.env.NEXT_PUBLIC_MY_PASSWORD ?? ""; if (!user || !pass) { console.error("Missing email/password environment variables"); return NextResponse.json( { error: "Missing EMAIL or PASSWORD" }, { status: 500 }, ); } if (!email || !name || !message) { console.error("Invalid request body"); return NextResponse.json( { error: "Invalid request body" }, { status: 400 }, ); } const transportOptions: SMTPTransport.Options = { host: "smtp.ionos.de", port: 587, secure: false, requireTLS: true, auth: { type: "login", user, pass, }, }; const transport = nodemailer.createTransport(transportOptions); const mailOptions: Mail.Options = { from: user, to: user, // Ensure this is the correct email address subject: `Message from ${name} (${email})`, text: message + "\n\n" + email, }; const sendMailPromise = () => new Promise((resolve, reject) => { transport.sendMail(mailOptions, function (err, info) { if (!err) { console.log("Email sent"); resolve(info.response); } else { console.error("Error sending email:", err); reject(err.message); } }); }); try { await sendMailPromise(); return NextResponse.json({ message: "Email sent" }); } catch (err) { console.error("Error sending email:", err); return NextResponse.json({ error: "Failed to send email" }, { status: 500 }); } }