fix: added sender retry and handled fail

This commit is contained in:
Riccardo
2023-12-16 08:56:20 +01:00
parent ac6b227870
commit bcc64eaef6
8 changed files with 199 additions and 138 deletions

View File

@@ -2,7 +2,7 @@ import { NextResponse } from 'next/server';
import { z } from 'zod';
import NewsletterTemplate from '../../../components/emails/newsletter';
import prisma from '../../../prisma/prisma';
import { sendEmail } from '../../../utils/sender';
import { sender } from '../../../utils/sender';
import { NewsDatabaseSchema, NewsSchema } from '../../../utils/types';
import { singleNews, topNews } from '../../../utils/urls';
@@ -69,11 +69,17 @@ export async function GET(request: Request) {
.filter((item): item is z.infer<typeof NewsSchema> => item !== undefined)
.sort((a, b) => b.score - a.score);
await sendEmail(
const sent = await sender(
users.map(user => user.email),
NewsletterTemplate(validRankedNews)
);
if (!sent) {
return new NextResponse('Internal server error', {
status: 500
});
}
return new NextResponse(`Newsletter sent to ${users.length} addresses.`, {
status: 200
});

View File

@@ -3,7 +3,7 @@ import { z } from 'zod';
import SubscribeTemplate from '../../../components/emails/subscribe';
import prisma from '../../../prisma/prisma';
import { ApiResponse } from '../../../utils/apiResponse';
import { sendEmail } from '../../../utils/sender';
import { sender } from '../../../utils/sender';
import { ResponseSchema, SubscribeFormSchema } from '../../../utils/types';
export const dynamic = 'force-dynamic'; // defaults to force-static
@@ -60,7 +60,11 @@ export async function POST(request: Request) {
}
});
await sendEmail([email], SubscribeTemplate(code));
const sent = await sender([email], SubscribeTemplate(code));
if (!sent) {
return ApiResponse(500, 'Internal server error');
}
const message: z.infer<typeof ResponseSchema> = {
message: `Thank you! You will now receive an email to ${email} to confirm the subscription.`

View File

@@ -2,7 +2,7 @@ import { z } from 'zod';
import UnsubscribeTemplate from '../../../components/emails/unsubscribe';
import prisma from '../../../prisma/prisma';
import { ApiResponse } from '../../../utils/apiResponse';
import { sendEmail } from '../../../utils/sender';
import { sender } from '../../../utils/sender';
import { ResponseSchema, UnsubscribeFormSchema } from '../../../utils/types';
export const dynamic = 'force-dynamic'; // defaults to force-static
@@ -31,7 +31,11 @@ export async function POST(request: Request) {
}
});
await sendEmail([email], UnsubscribeTemplate());
const sent = await sender([email], UnsubscribeTemplate());
if (!sent) {
return ApiResponse(500, 'Internal server error');
}
}
const message: z.infer<typeof ResponseSchema> = {