import nodemailer from "nodemailer";
import NodemailerConfig from "../../config/nodemailerConfig";
import { EmailMessage } from "../../interfaces/nodemailer";

const port = Number(NodemailerConfig.PORT) || 465;
const transporter = nodemailer.createTransport({
  host: NodemailerConfig.HOST,
  port,
  secure: port === 465,
  auth: {
    user: NodemailerConfig.MAIL_USERNAME,
    pass: NodemailerConfig.PASSWORD,
  },
  tls: {
    rejectUnauthorized: false,
  },
});

export const sendEmail = async (
  to: string,
  subject: string,
  content: string
): Promise<boolean> => {
  const message: EmailMessage = {
    from: {
      name: String(NodemailerConfig.MAIL_FROM_NAME),
      address: String(NodemailerConfig.MAIL_USERNAME),
    },
    to: to,
    subject: subject,
    html: content,
  };

  try {
    const info = await transporter.sendMail(message);
    console.log(
      `[email] sent to=${to} subject="${subject}" messageId=${info.messageId ?? "?"}`,
    );
    return true;
  } catch (error) {
    console.error("[email] Error sending email:", error);
    return false;
  }
};
