Update email code to send an email per EditUserCell
using multiple recipients is break of privacy since user will be able to see each other's emails.
This commit is contained in:
@@ -1,26 +1,45 @@
|
||||
import { requireAuth } from 'src/lib/auth'
|
||||
import { sendMail } from 'src/lib/sendmail'
|
||||
import type { SendMailArgs } from 'src/lib/sendmail'
|
||||
import { users } from 'src/services/users/users'
|
||||
|
||||
export const sendAllUsersEmail = async ({ input: { body, subject } }) => {
|
||||
requireAuth({ role: 'admin' })
|
||||
const recipients = (await users()).map(({ email }) => email)
|
||||
const from = {
|
||||
address: 'news@mail.cadhub.xyz',
|
||||
name: 'CadHub',
|
||||
}
|
||||
const result = await sendMail({
|
||||
to: recipients,
|
||||
const emails: SendMailArgs[] = (await users()).map(({ email }) => ({
|
||||
to: email,
|
||||
from,
|
||||
subject,
|
||||
text: body,
|
||||
}))
|
||||
const emailPromises = emails.map((email) => sendMail(email))
|
||||
const accepted = []
|
||||
const rejected = []
|
||||
const result = await Promise.allSettled(emailPromises)
|
||||
result.forEach((result) => {
|
||||
if (result.status === 'fulfilled') {
|
||||
accepted.push(result.value.accepted[0])
|
||||
} else {
|
||||
rejected.push(result.reason)
|
||||
}
|
||||
})
|
||||
await sendMail({
|
||||
to: 'k.hutten@protonmail.ch',
|
||||
from,
|
||||
subject: `All users email report`,
|
||||
text: JSON.stringify(result, null, 2),
|
||||
text: JSON.stringify(
|
||||
{
|
||||
accepted,
|
||||
rejected,
|
||||
originalEmailList: emails,
|
||||
},
|
||||
null,
|
||||
2
|
||||
),
|
||||
})
|
||||
|
||||
return result
|
||||
return { accepted, rejected }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user