import nodemailer from 'nodemailer' export interface ContactFormData { nom: string prenom: string email: string telephone?: string entreprise?: string fonction?: string typeProjet?: string budget?: string delai?: string description: string objectifs?: string contraintes?: string services: string[] demo: boolean accompagnement: boolean } export interface FormationFormData { entreprise: string secteur?: string taille?: string siret?: string nom: string prenom: string fonction?: string email: string telephone?: string formations: string[] modalite?: string participants?: string dates?: string lieu?: string objectifs?: string niveau?: string contraintes?: string certification: boolean support: boolean accompagnement: boolean } export async function sendContactEmail(data: ContactFormData) { try { console.log('📧 Envoi email contact - PRODUCTION') // Vérification des variables d'environnement if (!process.env.SMTP_HOST || !process.env.SMTP_USER || !process.env.SMTP_PASSWORD) { console.error('❌ Variables SMTP manquantes') return { success: false, error: 'Configuration email manquante' } } // Configuration SMTP - CORRECTION ICI const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST, port: parseInt(process.env.SMTP_PORT || '587'), secure: false, auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASSWORD, }, }) // Adresse de destination explicite const destinationEmail = 'contact@docv.fr' const servicesText = data.services.length > 0 ? data.services.join(', ') : 'Aucun service sélectionné' const mailOptions = { from: process.env.SMTP_USER, to: destinationEmail, replyTo: data.email, subject: `[DocV] Contact - ${data.nom} ${data.prenom}`, html: `

🔐 DocV - Nouvelle demande de contact

👤 Informations de contact

Nom : ${data.nom}

Prénom : ${data.prenom}

Email : ${data.email}

${data.telephone ? `

Téléphone : ${data.telephone}

` : ''} ${data.entreprise ? `

Entreprise : ${data.entreprise}

` : ''} ${data.fonction ? `

Fonction : ${data.fonction}

` : ''}

🎯 Projet

${data.typeProjet ? `

Type de projet : ${data.typeProjet}

` : ''} ${data.budget ? `

Budget estimé : ${data.budget}

` : ''} ${data.delai ? `

Délai souhaité : ${data.delai}

` : ''}

📝 Description

${data.description.replace(/\n/g, '
')}
${data.objectifs ? `

🎯 Objectifs

${data.objectifs.replace(/\n/g, '
')}
` : ''} ${data.contraintes ? `

⚠️ Contraintes

${data.contraintes.replace(/\n/g, '
')}
` : ''}

🛠️ Services demandés

${servicesText}

⚙️ Options

Démonstration souhaitée : ${data.demo ? '✅ Oui' : '❌ Non'}

Accompagnement personnalisé : ${data.accompagnement ? '✅ Oui' : '❌ Non'}

📧 Message envoyé depuis docv.fr le ${new Date().toLocaleString('fr-FR')}

🔐 DocV - Solutions de souveraineté numérique by 4NK

`, text: ` DocV - Nouvelle demande de contact INFORMATIONS DE CONTACT: - Nom: ${data.nom} - Prénom: ${data.prenom} - Email: ${data.email} ${data.telephone ? `- Téléphone: ${data.telephone}` : ''} ${data.entreprise ? `- Entreprise: ${data.entreprise}` : ''} ${data.fonction ? `- Fonction: ${data.fonction}` : ''} PROJET: ${data.typeProjet ? `- Type: ${data.typeProjet}` : ''} ${data.budget ? `- Budget: ${data.budget}` : ''} ${data.delai ? `- Délai: ${data.delai}` : ''} DESCRIPTION: ${data.description} ${data.objectifs ? `OBJECTIFS:\n${data.objectifs}\n` : ''} ${data.contraintes ? `CONTRAINTES:\n${data.contraintes}\n` : ''} SERVICES: ${servicesText} OPTIONS: - Démonstration: ${data.demo ? 'Oui' : 'Non'} - Accompagnement: ${data.accompagnement ? 'Oui' : 'Non'} --- Message envoyé depuis docv.fr le ${new Date().toLocaleString('fr-FR')} ` } console.log('📤 Envoi vers:', destinationEmail) console.log('📤 Depuis:', process.env.SMTP_USER) const result = await transporter.sendMail(mailOptions) console.log('✅ Email contact envoyé:', result.messageId) return { success: true } } catch (error: any) { console.error('❌ Erreur envoi email contact:', error.message) console.error('❌ Stack:', error.stack) return { success: false, error: `Erreur d'envoi: ${error.message}` } } } export async function sendFormationEmail(data: FormationFormData) { try { console.log('📧 Envoi email formation - PRODUCTION') // Vérification des variables d'environnement if (!process.env.SMTP_HOST || !process.env.SMTP_USER || !process.env.SMTP_PASSWORD) { console.error('❌ Variables SMTP manquantes') return { success: false, error: 'Configuration email manquante' } } // Configuration SMTP - CORRECTION ICI const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST, port: parseInt(process.env.SMTP_PORT || '587'), secure: false, auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASSWORD, }, }) // Adresse de destination explicite const destinationEmail = 'contact@docv.fr' const formationsText = data.formations.length > 0 ? data.formations.join(', ') : 'Aucune formation sélectionnée' const mailOptions = { from: process.env.SMTP_USER, to: destinationEmail, replyTo: data.email, subject: `[DocV] Formation - ${data.entreprise}`, html: `

🎓 DocV - Demande de devis formation

🏢 Informations entreprise

Entreprise : ${data.entreprise}

${data.secteur ? `

Secteur : ${data.secteur}

` : ''} ${data.taille ? `

Taille : ${data.taille}

` : ''} ${data.siret ? `

SIRET : ${data.siret}

` : ''}

👤 Contact

Nom : ${data.nom}

Prénom : ${data.prenom}

Email : ${data.email}

${data.telephone ? `

Téléphone : ${data.telephone}

` : ''} ${data.fonction ? `

Fonction : ${data.fonction}

` : ''}

📚 Formations souhaitées

${formationsText}

📅 Modalités

${data.modalite ? `

Mode de formation : ${data.modalite}

` : ''} ${data.participants ? `

Nombre de participants : ${data.participants}

` : ''} ${data.dates ? `

Période souhaitée : ${data.dates}

` : ''} ${data.lieu ? `

Lieu : ${data.lieu}

` : ''} ${data.objectifs ? `

🎯 Objectifs

${data.objectifs.replace(/\n/g, '
')}
` : ''} ${data.niveau ? `

Niveau des participants : ${data.niveau}

` : ''} ${data.contraintes ? `

⚠️ Contraintes

${data.contraintes.replace(/\n/g, '
')}
` : ''}

⚙️ Options

Certification RNCP : ${data.certification ? '✅ Oui' : '❌ Non'}

Support 6 mois : ${data.support ? '✅ Oui' : '❌ Non'}

Accompagnement personnalisé : ${data.accompagnement ? '✅ Oui' : '❌ Non'}

📧 Message envoyé depuis docv.fr le ${new Date().toLocaleString('fr-FR')}

🎓 DocV Formation - Centre agréé 4NK

`, text: ` DocV - Demande de devis formation ENTREPRISE: ${data.entreprise} ${data.secteur ? `Secteur: ${data.secteur}` : ''} ${data.taille ? `Taille: ${data.taille}` : ''} CONTACT: ${data.nom} ${data.prenom} Email: ${data.email} ${data.telephone ? `Téléphone: ${data.telephone}` : ''} FORMATIONS: ${formationsText} MODALITÉS: ${data.modalite ? `Mode: ${data.modalite}` : ''} ${data.participants ? `Participants: ${data.participants}` : ''} ${data.dates ? `Dates: ${data.dates}` : ''} ${data.objectifs ? `OBJECTIFS: ${data.objectifs}` : ''} ${data.contraintes ? `CONTRAINTES: ${data.contraintes}` : ''} OPTIONS: - Certification: ${data.certification ? 'Oui' : 'Non'} - Support: ${data.support ? 'Oui' : 'Non'} - Accompagnement: ${data.accompagnement ? 'Oui' : 'Non'} --- Message envoyé depuis docv.fr le ${new Date().toLocaleString('fr-FR')} ` } console.log('📤 Envoi formation vers:', destinationEmail) console.log('📤 Depuis:', process.env.SMTP_USER) const result = await transporter.sendMail(mailOptions) console.log('✅ Email formation envoyé:', result.messageId) return { success: true } } catch (error: any) { console.error('❌ Erreur envoi email formation:', error.message) console.error('❌ Stack:', error.stack) return { success: false, error: `Erreur d'envoi: ${error.message}` } } }