From bd8a5a92c74946561374b7a711215f81f30952e0 Mon Sep 17 00:00:00 2001 From: swetalin-10 Date: Sun, 21 Jun 2026 11:46:15 +0530 Subject: [PATCH 1/2] feat: automated order confirmation emails (closes #133) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BACKEND/services/email.service.js: shared nodemailer transport; sendOrderConfirmationEmail builds a branded HTML receipt (item table, order ID, estimated delivery +5 days, total charged) and sends it; also exports sendPasswordResetEmail for the password-reset flow; graceful no-op with console.log when SMTP env vars are not set - BACKEND/controllers/checkout.controller.js: after Order.create in the Stripe webhook, fires sendOrderConfirmationEmail using session.customer_details.email (preferred, always present in Stripe Checkout) with fallback to looking up the User document by userId stored in session metadata; email is non-blocking — failures are caught and logged, never breaking order fulfillment - nodemailer added to BACKEND dependencies --- BACKEND/controllers/checkout.controller.js | 20 +++- BACKEND/package-lock.json | 10 ++ BACKEND/package.json | 1 + BACKEND/services/email.service.js | 133 +++++++++++++++++++++ 4 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 BACKEND/services/email.service.js diff --git a/BACKEND/controllers/checkout.controller.js b/BACKEND/controllers/checkout.controller.js index 6dcb8a5..e4c583b 100644 --- a/BACKEND/controllers/checkout.controller.js +++ b/BACKEND/controllers/checkout.controller.js @@ -1,7 +1,9 @@ import Product from '../models/product.model.js'; import Order from '../models/order.model.js'; +import User from '../models/user.model.js'; import mongoose from 'mongoose'; import Stripe from 'stripe'; +import { sendOrderConfirmationEmail } from '../services/email.service.js'; let stripe; if (process.env.NODE_ENV === 'test') { @@ -174,13 +176,29 @@ export const stripeWebhook = async (req, res) => { deductions.push({ productId: item._id, quantity: item.quantity }); } - await Order.create({ + const order = await Order.create({ user: session.metadata?.userId || null, items: orderItems, totalAmount: session.amount_total / 100, stripeSessionId: session.id, paymentStatus: "completed", }); + + // Send confirmation email — non-blocking; failures never break fulfillment + const customerEmail = session.customer_details?.email; + if (customerEmail) { + sendOrderConfirmationEmail(customerEmail, order).catch((err) => + console.error('[Email] Order confirmation failed:', err.message) + ); + } else if (session.metadata?.userId) { + User.findById(session.metadata.userId).select('email').lean().then((u) => { + if (u?.email) { + sendOrderConfirmationEmail(u.email, order).catch((err) => + console.error('[Email] Order confirmation failed:', err.message) + ); + } + }).catch(() => {}); + } } res.json({ received: true }); diff --git a/BACKEND/package-lock.json b/BACKEND/package-lock.json index c550ce9..cf7e726 100644 --- a/BACKEND/package-lock.json +++ b/BACKEND/package-lock.json @@ -22,6 +22,7 @@ "mongodb-memory-server": "^11.0.1", "mongoose": "^8.13.2", "multer": "^2.1.1", + "nodemailer": "^9.0.1", "passport": "^0.7.0", "passport-github2": "^0.1.12", "passport-google-oauth20": "^2.0.0", @@ -5766,6 +5767,15 @@ "node": ">=18" } }, + "node_modules/nodemailer": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.1.tgz", + "integrity": "sha512-Gwv8SQewT616ZM/URn0H54b8PWo/Wum7md3EW2aWy1lO27+WZCX+Xyak3J+NlmHUjDh5ME+uesJUDRbR3Ye8Bw==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", diff --git a/BACKEND/package.json b/BACKEND/package.json index 8903eca..52a17c4 100644 --- a/BACKEND/package.json +++ b/BACKEND/package.json @@ -21,6 +21,7 @@ "mongodb-memory-server": "^11.0.1", "mongoose": "^8.13.2", "multer": "^2.1.1", + "nodemailer": "^9.0.1", "passport": "^0.7.0", "passport-github2": "^0.1.12", "passport-google-oauth20": "^2.0.0", diff --git a/BACKEND/services/email.service.js b/BACKEND/services/email.service.js new file mode 100644 index 0000000..2631556 --- /dev/null +++ b/BACKEND/services/email.service.js @@ -0,0 +1,133 @@ +import nodemailer from 'nodemailer'; + +function createTransporter() { + const { EMAIL_HOST, EMAIL_PORT, EMAIL_USER, EMAIL_PASS } = process.env; + if (!EMAIL_HOST || !EMAIL_USER || !EMAIL_PASS) { + console.warn('[Email] SMTP env vars missing — emails will be skipped.'); + return null; + } + return nodemailer.createTransport({ + host: EMAIL_HOST, + port: parseInt(EMAIL_PORT || '587'), + secure: parseInt(EMAIL_PORT || '587') === 465, + auth: { user: EMAIL_USER, pass: EMAIL_PASS }, + }); +} + +const transporter = createTransporter(); +const FROM = process.env.EMAIL_FROM || process.env.EMAIL_USER || 'noreply@productstore.com'; + +async function send(to, subject, html) { + if (!transporter) { + console.log(`[Email] Would send "${subject}" to ${to} (SMTP not configured)`); + return; + } + await transporter.sendMail({ from: FROM, to, subject, html }); +} + +export async function sendOrderConfirmationEmail(toEmail, order) { + const estimatedDelivery = new Date(); + estimatedDelivery.setDate(estimatedDelivery.getDate() + 5); + const deliveryStr = estimatedDelivery.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + + const itemRows = order.items + .map( + (item) => ` + + ${item.name} + ${item.quantity} + $${(item.price * item.quantity).toFixed(2)} + ` + ) + .join(''); + + const html = ` + + + + + + +
+ + + + + + + + + + + +
+

Order Confirmed!

+

Thank you for your purchase.

+
+

+ Hi there,

+ Your order has been received and is being processed. Here's a summary: +

+ + + + + + + + + + + +
Order ID${order._id}
Estimated Delivery${deliveryStr}
+ + + + + + + + + + + ${itemRows} +
ItemQtySubtotal
+ + + + + + + +
Total Charged$${order.totalAmount.toFixed(2)}
+
+

+ Questions? Reply to this email or visit our store.
+ © ${new Date().getFullYear()} Product Store +

+
+
+ +`; + + await send(toEmail, `Order Confirmation — $${order.totalAmount.toFixed(2)}`, html); +} + +export async function sendPasswordResetEmail(toEmail, resetUrl) { + const html = ` + + + + + +
+

Reset your password

+

Click the button below to set a new password. The link expires in 1 hour.

+ Reset Password +

If you didn't request this, you can safely ignore this email.

+
+ +`; + + await send(toEmail, 'Reset your Product Store password', html); +} From 85908d7c6eb38831a8912467afcee211675510aa Mon Sep 17 00:00:00 2001 From: swetalin-10 Date: Sun, 21 Jun 2026 11:47:03 +0530 Subject: [PATCH 2/2] chore: add order confirmation email screenshot for PR --- .../screenshots/order-confirmation-email.png | Bin 0 -> 52418 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/screenshots/order-confirmation-email.png diff --git a/.github/screenshots/order-confirmation-email.png b/.github/screenshots/order-confirmation-email.png new file mode 100644 index 0000000000000000000000000000000000000000..b76b988fa5abda2c92e5cacc9eae243a91e5a96f GIT binary patch literal 52418 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 literal 0 HcmV?d00001