add people n heor
This commit is contained in:
		
							
								
								
									
										80
									
								
								src/app/api/contact/route.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								src/app/api/contact/route.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
import { NextRequest, NextResponse } from 'next/server'
 | 
			
		||||
import nodemailer from 'nodemailer'
 | 
			
		||||
 | 
			
		||||
export async function POST(request: NextRequest) {
 | 
			
		||||
  try {
 | 
			
		||||
    const body = await request.json()
 | 
			
		||||
    const { firstName, lastName, email, phoneNumber, message } = body
 | 
			
		||||
 | 
			
		||||
    // Validate required fields
 | 
			
		||||
    if (!firstName || !lastName || !email || !message) {
 | 
			
		||||
      return NextResponse.json(
 | 
			
		||||
        { error: 'Missing required fields' },
 | 
			
		||||
        { status: 400 }
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Create transporter using Gmail SMTP
 | 
			
		||||
    const transporter = nodemailer.createTransport({
 | 
			
		||||
      service: 'gmail',
 | 
			
		||||
      auth: {
 | 
			
		||||
        user: process.env.GMAIL_USER,
 | 
			
		||||
        pass: process.env.GMAIL_APP_PASSWORD,
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    // Email content
 | 
			
		||||
    const mailOptions = {
 | 
			
		||||
      from: process.env.GMAIL_USER,
 | 
			
		||||
      to: process.env.COMPANY_EMAIL || process.env.GMAIL_USER,
 | 
			
		||||
      subject: `New Contact Form Submission from ${firstName} ${lastName}`,
 | 
			
		||||
      html: `
 | 
			
		||||
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
 | 
			
		||||
          <h2 style="color: #4f46e5;">New Contact Form Submission</h2>
 | 
			
		||||
          
 | 
			
		||||
          <div style="background-color: #f8fafc; padding: 20px; border-radius: 8px; margin: 20px 0;">
 | 
			
		||||
            <h3 style="margin-top: 0; color: #374151;">Contact Information</h3>
 | 
			
		||||
            <p><strong>Name:</strong> ${firstName} ${lastName}</p>
 | 
			
		||||
            <p><strong>Email:</strong> <a href="mailto:${email}">${email}</a></p>
 | 
			
		||||
            ${phoneNumber ? `<p><strong>Phone:</strong> ${phoneNumber}</p>` : ''}
 | 
			
		||||
          </div>
 | 
			
		||||
          
 | 
			
		||||
          <div style="background-color: #f8fafc; padding: 20px; border-radius: 8px; margin: 20px 0;">
 | 
			
		||||
            <h3 style="margin-top: 0; color: #374151;">Message</h3>
 | 
			
		||||
            <p style="white-space: pre-wrap;">${message}</p>
 | 
			
		||||
          </div>
 | 
			
		||||
          
 | 
			
		||||
          <div style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #e5e7eb; color: #6b7280; font-size: 14px;">
 | 
			
		||||
            <p>This email was sent from the OurWorld contact form on ${new Date().toLocaleString()}.</p>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      `,
 | 
			
		||||
      text: `
 | 
			
		||||
New Contact Form Submission
 | 
			
		||||
 | 
			
		||||
Name: ${firstName} ${lastName}
 | 
			
		||||
Email: ${email}
 | 
			
		||||
${phoneNumber ? `Phone: ${phoneNumber}` : ''}
 | 
			
		||||
 | 
			
		||||
Message:
 | 
			
		||||
${message}
 | 
			
		||||
 | 
			
		||||
Sent on: ${new Date().toLocaleString()}
 | 
			
		||||
      `,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Send email
 | 
			
		||||
    await transporter.sendMail(mailOptions)
 | 
			
		||||
 | 
			
		||||
    return NextResponse.json(
 | 
			
		||||
      { message: 'Email sent successfully' },
 | 
			
		||||
      { status: 200 }
 | 
			
		||||
    )
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    console.error('Error sending email:', error)
 | 
			
		||||
    return NextResponse.json(
 | 
			
		||||
      { error: 'Failed to send email' },
 | 
			
		||||
      { status: 500 }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user