@churchapps/apihelper 0.4.38 → 0.4.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/EmailHelper.d.ts +2 -2
- package/dist/helpers/EmailHelper.d.ts.map +1 -1
- package/dist/helpers/EmailHelper.js +8 -7
- package/dist/helpers/EmailHelper.js.map +1 -1
- package/dist/helpers/Interfaces.d.ts +1 -0
- package/dist/helpers/Interfaces.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/helpers/EmailHelper.ts +8 -8
- package/src/helpers/Interfaces.ts +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IEmailPayload } from '.';
|
|
2
2
|
export declare class EmailHelper {
|
|
3
3
|
private static getSESClient;
|
|
4
|
-
static sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate?: "EmailTemplate.html" | "ChurchEmailTemplate.html"): Promise<void>;
|
|
4
|
+
static sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate?: "EmailTemplate.html" | "ChurchEmailTemplate.html", replyTo?: string): Promise<void>;
|
|
5
5
|
static readTemplate(templateFile?: string): string;
|
|
6
6
|
private static sendSes;
|
|
7
|
-
static sendEmail({ from, to, subject, body }: IEmailPayload): Promise<void>;
|
|
7
|
+
static sendEmail({ from, to, subject, body, replyTo }: IEmailPayload): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=EmailHelper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,aAAa,EAAE,MAAM,GAAG,CAAA;AAIlD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,YAAY;WAIP,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,oBAAoB,GAAG,0BAAiD;
|
|
1
|
+
{"version":3,"file":"EmailHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,aAAa,EAAE,MAAM,GAAG,CAAA;AAIlD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,YAAY;WAIP,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,oBAAoB,GAAG,0BAAiD,EAAE,OAAO,CAAC,EAAE,MAAM;WAWhO,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM;mBAQ3B,OAAO;WAwBR,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAqClG"}
|
|
@@ -14,7 +14,7 @@ class EmailHelper {
|
|
|
14
14
|
static getSESClient() {
|
|
15
15
|
return new client_ses_1.SESClient({ region: "us-east-2" });
|
|
16
16
|
}
|
|
17
|
-
static async sendTemplatedEmail(from, to, appName, appUrl, subject, contents, emailTemplate = "EmailTemplate.html") {
|
|
17
|
+
static async sendTemplatedEmail(from, to, appName, appUrl, subject, contents, emailTemplate = "EmailTemplate.html", replyTo) {
|
|
18
18
|
if (!appName)
|
|
19
19
|
appName = "B1";
|
|
20
20
|
if (!appUrl)
|
|
@@ -23,7 +23,7 @@ class EmailHelper {
|
|
|
23
23
|
const emailBody = template
|
|
24
24
|
.replace("{appLink}", "<a target='_blank' rel='noreferrer noopener' href=\"" + appUrl + "/\">" + appName + "</a>")
|
|
25
25
|
.replace("{contents}", contents);
|
|
26
|
-
await EmailHelper.sendEmail({ from, to, subject, body: emailBody });
|
|
26
|
+
await EmailHelper.sendEmail({ from, to, subject, body: emailBody, replyTo });
|
|
27
27
|
}
|
|
28
28
|
static readTemplate(templateFile) {
|
|
29
29
|
if (!templateFile)
|
|
@@ -33,7 +33,7 @@ class EmailHelper {
|
|
|
33
33
|
const contents = buffer.toString();
|
|
34
34
|
return contents;
|
|
35
35
|
}
|
|
36
|
-
static async sendSes({ from, to, subject, body }) {
|
|
36
|
+
static async sendSes({ from, to, subject, body, replyTo }) {
|
|
37
37
|
const sesClient = this.getSESClient();
|
|
38
38
|
const sendCommand = new client_ses_1.SendEmailCommand({
|
|
39
39
|
Destination: {
|
|
@@ -51,11 +51,12 @@ class EmailHelper {
|
|
|
51
51
|
Data: subject
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
|
-
Source: from
|
|
54
|
+
Source: from,
|
|
55
|
+
ReplyToAddresses: replyTo ? [replyTo] : undefined
|
|
55
56
|
});
|
|
56
57
|
await sesClient.send(sendCommand);
|
|
57
58
|
}
|
|
58
|
-
static async sendEmail({ from, to, subject, body }) {
|
|
59
|
+
static async sendEmail({ from, to, subject, body, replyTo }) {
|
|
59
60
|
try {
|
|
60
61
|
// Use a safer fallback - streamline transport (for testing/dev) or require proper SMTP config
|
|
61
62
|
let transporter = nodemailer_1.default.createTransport({
|
|
@@ -64,7 +65,7 @@ class EmailHelper {
|
|
|
64
65
|
buffer: true
|
|
65
66
|
});
|
|
66
67
|
if (_1.EnvironmentBase.mailSystem === 'SES') {
|
|
67
|
-
await this.sendSes({ from, to, subject, body });
|
|
68
|
+
await this.sendSes({ from, to, subject, body, replyTo });
|
|
68
69
|
}
|
|
69
70
|
else {
|
|
70
71
|
if (_1.EnvironmentBase.mailSystem === "SMTP") {
|
|
@@ -83,7 +84,7 @@ class EmailHelper {
|
|
|
83
84
|
console.log(body);
|
|
84
85
|
}
|
|
85
86
|
else {
|
|
86
|
-
await transporter.sendMail({ from, to, subject, html: body });
|
|
87
|
+
await transporter.sendMail({ from, to, subject, html: body, replyTo });
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailHelper.js","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAkE;AAClE,4DAAmC;AACnC,sEAAsE;AACtE,wBAAkD;AAClD,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,WAAW;IAEd,MAAM,CAAC,YAAY;QACzB,OAAO,IAAI,sBAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,EAAU,EAAE,OAAe,EAAE,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,gBAAmE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"EmailHelper.js","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../src/helpers/Interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACtF,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE"}
|
|
1
|
+
{"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../src/helpers/Interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACtF,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ export class EmailHelper {
|
|
|
11
11
|
return new SESClient({ region: "us-east-2" });
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public static async sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate: "EmailTemplate.html" | "ChurchEmailTemplate.html" = "EmailTemplate.html") {
|
|
14
|
+
public static async sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate: "EmailTemplate.html" | "ChurchEmailTemplate.html" = "EmailTemplate.html", replyTo?: string) {
|
|
15
15
|
if (!appName) appName = "B1";
|
|
16
16
|
if (!appUrl) appUrl = "https://b1.church";
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ export class EmailHelper {
|
|
|
19
19
|
const emailBody = template
|
|
20
20
|
.replace("{appLink}", "<a target='_blank' rel='noreferrer noopener' href=\"" + appUrl + "/\">" + appName + "</a>")
|
|
21
21
|
.replace("{contents}", contents);
|
|
22
|
-
await EmailHelper.sendEmail({ from, to, subject, body: emailBody });
|
|
22
|
+
await EmailHelper.sendEmail({ from, to, subject, body: emailBody, replyTo });
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
public static readTemplate(templateFile?: string) {
|
|
@@ -30,7 +30,7 @@ export class EmailHelper {
|
|
|
30
30
|
return contents;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
private static async sendSes({ from, to, subject, body }: IEmailPayload) {
|
|
33
|
+
private static async sendSes({ from, to, subject, body, replyTo }: IEmailPayload) {
|
|
34
34
|
const sesClient = this.getSESClient();
|
|
35
35
|
const sendCommand = new SendEmailCommand({
|
|
36
36
|
Destination: {
|
|
@@ -48,13 +48,13 @@ export class EmailHelper {
|
|
|
48
48
|
Data: subject
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
Source: from
|
|
52
|
-
|
|
51
|
+
Source: from,
|
|
52
|
+
ReplyToAddresses: replyTo ? [replyTo] : undefined
|
|
53
53
|
});
|
|
54
54
|
await sesClient.send(sendCommand);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
public static async sendEmail({ from, to, subject, body }: IEmailPayload): Promise<void> {
|
|
57
|
+
public static async sendEmail({ from, to, subject, body, replyTo }: IEmailPayload): Promise<void> {
|
|
58
58
|
try {
|
|
59
59
|
// Use a safer fallback - streamline transport (for testing/dev) or require proper SMTP config
|
|
60
60
|
let transporter: nodemailer.Transporter = nodemailer.createTransport({
|
|
@@ -64,7 +64,7 @@ export class EmailHelper {
|
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
if (EnvironmentBase.mailSystem === 'SES') {
|
|
67
|
-
await this.sendSes({ from, to, subject, body });
|
|
67
|
+
await this.sendSes({ from, to, subject, body, replyTo });
|
|
68
68
|
} else {
|
|
69
69
|
if (EnvironmentBase.mailSystem === "SMTP") {
|
|
70
70
|
transporter = nodemailer.createTransport({
|
|
@@ -82,7 +82,7 @@ export class EmailHelper {
|
|
|
82
82
|
console.log(subject);
|
|
83
83
|
console.log(body);
|
|
84
84
|
} else {
|
|
85
|
-
await transporter.sendMail({ from, to, subject, html: body });
|
|
85
|
+
await transporter.sendMail({ from, to, subject, html: body, replyTo });
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
return null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export interface IPermission { contentType: string; action: string; apiName?: string }
|
|
2
|
-
export interface IEmailPayload { from: string, to: string, subject: string, body: string }
|
|
2
|
+
export interface IEmailPayload { from: string, to: string, subject: string, body: string, replyTo?: string }
|