mirror of
https://github.com/jcreek/SvelteKitSaasBoilerplate.git
synced 2026-07-13 02:53:50 +00:00
feat(#55): Enable sending account deletion emails through brevo npm package
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import brevo from '@getbrevo/brevo';
|
||||
import {
|
||||
VITE_BREVO_API_KEY,
|
||||
VITE_BREVO_SENDER_EMAIL,
|
||||
VITE_BREVO_SENDER_NAME
|
||||
} from '$env/static/private';
|
||||
|
||||
const apiInstance = new brevo.TransactionalEmailsApi();
|
||||
const apiKey = apiInstance.authentications['apiKey'];
|
||||
apiKey.apiKey = VITE_BREVO_API_KEY;
|
||||
|
||||
const sendEmail = async (subject: string, htmlContentString: string, toAddress: string) => {
|
||||
const sendSmtpEmail = new brevo.SendSmtpEmail();
|
||||
|
||||
sendSmtpEmail.subject = subject;
|
||||
sendSmtpEmail.htmlContent = htmlContentString;
|
||||
sendSmtpEmail.sender = { name: VITE_BREVO_SENDER_NAME, email: VITE_BREVO_SENDER_EMAIL };
|
||||
sendSmtpEmail.to = [{ email: toAddress, name: toAddress }];
|
||||
sendSmtpEmail.replyTo = { email: VITE_BREVO_SENDER_EMAIL, name: VITE_BREVO_SENDER_NAME };
|
||||
|
||||
apiInstance.sendTransacEmail(sendSmtpEmail).then(
|
||||
function (data) {
|
||||
console.log('API called successfully. Returned data: ' + JSON.stringify(data));
|
||||
},
|
||||
function (error) {
|
||||
console.error(error);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export { sendEmail };
|
||||
@@ -4,6 +4,7 @@ import type { Database, Tables, TablesInsert } from '$lib/types/supabase';
|
||||
import { PUBLIC_SUPABASE_URL } from '$env/static/public';
|
||||
import { SUPABASE_SERVICE_ROLE_KEY } from '$env/static/private';
|
||||
import { stripe as stripeClient } from '$lib/utils/stripe';
|
||||
import { sendEmail } from '../brevo/email';
|
||||
|
||||
const toDateTime = (secs: number) => {
|
||||
const t = new Date(+0); // Unix epoch start.
|
||||
@@ -494,18 +495,17 @@ const requestAccountDeletion = async (userId: string, userEmail: string, baseUrl
|
||||
const deletionLink = `${baseUrl}/api/delete-account?token=${token}`;
|
||||
|
||||
// Send deletion email using Brevo
|
||||
// try {
|
||||
// await brevoClient.sendTransactionalEmail({
|
||||
// to: [{ email: userEmail }],
|
||||
// subject: 'Confirm Account Deletion',
|
||||
// htmlContent: `<p>Click <a href="${deletionLink}">here</a> to confirm your account deletion.</p>`
|
||||
// });
|
||||
// console.log('Deletion email sent successfully.');
|
||||
// } catch (emailError) {
|
||||
// console.error('Failed to send deletion email:', emailError);
|
||||
// throw new Error('Failed to send confirmation email.');
|
||||
// }
|
||||
console.log('Deletion email would be sent successfully.', deletionLink);
|
||||
try {
|
||||
await sendEmail(
|
||||
'Confirm Account Deletion',
|
||||
`<p>Click <a href="${deletionLink}">here</a> to confirm your account deletion.</p>`,
|
||||
userEmail
|
||||
);
|
||||
console.log('Deletion email sent successfully.');
|
||||
} catch (emailError) {
|
||||
console.error('Failed to send deletion email:', emailError);
|
||||
throw new Error('Failed to send confirmation email.');
|
||||
}
|
||||
};
|
||||
|
||||
const deleteAccount = async (token: string) => {
|
||||
|
||||
Reference in New Issue
Block a user