import { type NextRequest, NextResponse } from "next/server"; import nodemailer from "nodemailer"; import SMTPTransport from "nodemailer/lib/smtp-transport"; import Mail from "nodemailer/lib/mailer"; import dotenv from "dotenv"; dotenv.config(); export async function POST(request: NextRequest) { const { email, name, message } = await request.json(); const user = process.env.MY_EMAIL ?? ""; const pass = process.env.MY_PASSWORD ?? ""; if (!user || !pass) { console.error("Missing email or password environment variables"); return NextResponse.json( { error: "Internal server error" }, { status: 500 }, ); } 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\nSent from ${email}`, }; const sendMailPromise = () => new Promise((resolve, reject) => { transport.sendMail(mailOptions, function (err, info) { if (!err) { console.log("Email sent:", info.response); 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: err }, { status: 500 }); } }