-
Notifications
You must be signed in to change notification settings - Fork 6
/
Email.ts
134 lines (123 loc) · 2.7 KB
/
Email.ts
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import TagoIOModule, { GenericModuleParams } from "../../common/TagoIOModule";
interface AttachmentOptions {
/**
* Archive itself
*/
archive: string;
/**
* Name for the archive
*/
filename: string;
}
interface TemplateOptions {
/**
* Template name
*
* You can create an e-mail template on TagoRUN options at
* https://admin.tago.io/run
*/
name: string;
/**
* Parameters to parse on Template
*
* You can use that parameter as local variable
* using $PARAMETER_KEY$
*
* example: params = { name: 'John' }
* will be $name$ on template document
*/
params?: {
[key: string]: string | number;
};
}
interface EmailBase {
/**
* E-mail address to be sent
*
* example: "myclien@tago.io"
*/
to: string;
/**
* Name of origin
*
* example: "My Run"
*/
from?: string;
/**
* Subject of the e-mail
*
* only allow with message or html
*/
subject: string;
/**
* Attachment for the e-mail
*/
attachment?: AttachmentOptions;
}
interface EmailRawText {
/**
* Message in raw text for email body
*/
message: string;
}
interface EmailHTML {
/**
* HTML email body
*/
html: string;
}
interface EmailWithTemplate {
/**
* E-mail address to be sent
*
* example: "myclien@tago.io"
*/
to: string;
/**
* Name of origin
*
* example: "My Run"
*/
from?: string;
/**
* Attachment for the e-mail
*/
attachment?: AttachmentOptions;
/**
* Use TagoRUN E-Mail Template
*
* Tip: If you use template together with attachment the
* back-end will generate a parameter called 'URL';
*/
template?: TemplateOptions;
}
type EmailWithHTML = EmailBase & EmailHTML;
type EmailWithRawText = EmailBase & EmailRawText;
class Email extends TagoIOModule<GenericModuleParams> {
/**
* Send email
* @param email E-mail Object
*
* @example
* ```json
* { to: "client(at)company.com", subject: "Reports", message: "Hello client, it's your report" }
* { to: "client(at)company.com", subject: "Reports", html: "<p>Hello client, it's your report</p>" }
* { to: "client(at)company.com", template: { name: "my_template" } }
* ```
*/
public async send(email: EmailWithRawText): Promise<string>;
public async send(email: EmailWithHTML): Promise<string>;
public async send(email: EmailWithTemplate): Promise<string>;
public async send(email: any): Promise<string> {
if (email.html && email.message) {
console.warn(new Error("HTML field will overwrite message field"));
}
const result = await this.doRequest<string>({
path: "/analysis/services/email/send",
method: "POST",
body: email,
});
return result;
}
}
export default Email;