import nodemailer from 'nodemailer'; import type { EmailOptions } from '../globalInterfaces'; const isDev = import.meta.env.DEV; const hasProductionFlag = import.meta.env.PROD === 'true'; const forceProduction = import.meta.env.PB_POCKETBASE_URL?.includes('avt-back') || false; const isProduction = hasProductionFlag || forceProduction || !isDev; const RESEND_API_KEY = isProduction ? (import.meta.env.RESEND_API_KEY || '') : ''; const SMTP_HOST = isProduction ? (import.meta.env.SMTP_HOST || '') : ''; const SMTP_PORT = isProduction ? (import.meta.env.SMTP_PORT || '465') : '1025'; const SMTP_AUTH_USER = isProduction ? (import.meta.env.SMTP_AUTH_USER || '') : ''; const SMTP_AUTH_PASS = isProduction ? (import.meta.env.SMTP_AUTH_PASS || '') : ''; const FROM_EMAIL = isProduction ? (import.meta.env.FROM_EMAIL || 'noreply@localhost') : 'noreply@localhost'; const FROM_NAME = isProduction ? (import.meta.env.FROM_NAME || 'Автоюрист Сургут') : 'Dev'; const SITE_URL = isProduction ? (import.meta.env.SITE_URL || 'https://avtourist-surgut.ru') : 'http://localhost:4321'; console.log('[EMAIL] isDev:', isDev); console.log('[EMAIL] isProduction:', isProduction); console.log('[EMAIL] SMTP:', SMTP_HOST, ':', SMTP_PORT); function getTransporter() { return nodemailer.createTransport({ host: SMTP_HOST, port: parseInt(SMTP_PORT), secure: SMTP_PORT === '465', connectionTimeout: 15000, auth: SMTP_AUTH_USER ? { user: SMTP_AUTH_USER, pass: SMTP_AUTH_PASS, } : undefined, }); } async function sendViaResend(options: EmailOptions): Promise { try { const response = await fetch('https://api.resend.com/emails', { method: 'POST', headers: { 'Authorization': `Bearer ${RESEND_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ from: `${FROM_NAME} <${FROM_EMAIL}>`, to: options.to, subject: options.subject, html: options.html, }), }); const data = await response.json(); if (response.ok) { console.log('[RESEND] Email sent:', data.id); return true; } else { console.error('[RESEND] Error:', data); return false; } } catch (error) { console.error('[RESEND] Error:', error); return false; } } export async function sendEmail(options: EmailOptions): Promise { if (SMTP_HOST && SMTP_AUTH_PASS) { try { const info = await getTransporter().sendMail({ from: `${FROM_NAME} <${FROM_EMAIL}>`, to: options.to, subject: options.subject, html: options.html, }); console.log('[SMTP] Email sent:', info.messageId); return true; } catch (error) { console.error('[SMTP] Email send error:', error); return false; } } if (isProduction && RESEND_API_KEY) { return sendViaResend(options); } console.log('[DEV] Email not sent:', options.to); return false; } export function getSiteUrl(): string { return SITE_URL; } export function generateVerifyEmailHtml(firstName: string, verifyLink: string): string { return ` Подтверждение регистрации

Автоюрист Сургут

Юридические услуги для автовладельцев

Добро пожаловать, ${firstName}!

Благодарим за регистрацию на сайте avtourist-surgut.ru. Мы рады, что вы выбрали нас для решения юридических вопросов, связанных с автомобилем.

Для завершения регистрации и активации вашего аккаунта, пожалуйста, подтвердите ваш email, нажав на кнопку ниже:

Подтвердить регистрацию

© 2026 Автоюрист Сургут. Все права защищены.

`; }