-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Expand file tree
/
Copy pathsendUserEmail.ts
More file actions
54 lines (45 loc) · 1.6 KB
/
sendUserEmail.ts
File metadata and controls
54 lines (45 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { MeteorError } from '@rocket.chat/core-services';
import type { SaveUserData } from './saveUser';
import * as Mailer from '../../../../mailer/server/api';
import { settings } from '../../../../settings/server';
let html = '';
let passwordChangedHtml = '';
Meteor.startup(() => {
Mailer.getTemplate('Accounts_UserAddedEmail_Email', (template) => {
html = template;
});
Mailer.getTemplate('Password_Changed_Email', (template) => {
passwordChangedHtml = template;
});
});
export async function sendUserEmail(subject: string, html: string, userData: SaveUserData): Promise<void> {
if (!userData.email) {
return;
}
const email = {
to: userData.email,
from: settings.get<string>('From_Email'),
subject,
html,
data: {
email: userData.email,
password: userData.password ?? '******',
...(typeof userData.name !== 'undefined' ? { name: userData.name } : {}),
},
};
try {
await Mailer.send(email);
} catch (error) {
const errorMessage = typeof error === 'object' && error && 'message' in error ? error.message : '';
throw new MeteorError('error-email-send-failed', `Error trying to send email: ${errorMessage}`, {
function: 'RocketChat.saveUser',
message: errorMessage,
});
}
}
export async function sendWelcomeEmail(userData: Pick<SaveUserData, 'email' | 'name' | 'password'>) {
return sendUserEmail(settings.get('Accounts_UserAddedEmail_Subject'), html, userData);
}
export async function sendPasswordEmail(userData: Pick<SaveUserData, 'email' | 'name' | 'password'>) {
return sendUserEmail(settings.get('Password_Changed_Email_Subject'), passwordChangedHtml, userData);
}