import mailJet = require('node-mailjet'); import { Email, SMS, ConnectOptions } from 'node-mailjet'; const connection: Email.Client = mailJet.connect('MJ_APIKEY_PUBLIC', 'MJ_APIKEY_PRIVATE'); // *** Email API *** // // send api v3.1 const params: Email.SendParams = { Messages: [{ From: { Email: "sender@email.com", Name: "Me" }, To: [{ Email: "passenger1@mailjet.com", Name: "You" }], Cc: [{ Email: "copilot@mailjet.com", Name: "Copilot" }], Bcc: [{ Email: "air-traffic-control@mailjet.com", Name: "Air traffic control" }], Subject: "My first Mailjet Email!", TextPart: "Greetings from Mailjet!", HTMLPart: "

Welcome to Mailjet!

" }], SandboxMode: true, }; const mailJetRequest: Email.PostResource = connection.post("send", {version: 'v3.1'}); const mailJetResponse: Promise = mailJetRequest.request(params); mailJetResponse.then((res: Email.PostResponse) => { const body: Email.PostResponseData = res.body; const messages: ReadonlyArray = body.Messages; const message: Email.PostResponseDataMessage = messages[0]; const to: ReadonlyArray = message.To; const cc: ReadonlyArray = message.Cc; const bcc: ReadonlyArray = message.Bcc; const email: string = to[0].Email; const messageHref: string = to[0].MessageHref; const messageId: number = to[0].MessageID; const messageUUID: string = to[0].MessageUUID; }).catch((err: Error) => { // ignore }); // send api v3 const paramsV3: object = { FromEmail: "sender@email.com", FromName: "Mailjet Pilot", Subject: "Your email flight plan!", "Text-part": "Dear passenger, welcome to Mailjet! May the delivery force be with you!", "Html-part": "

Welcome to Mailjet!", Recipients: [{Email: "passenger@mailjet.com"}], SandboxMode: true }; const mailJetRequestV3: Email.PostResource = connection.post("send"); const mailJetResponseV3: Promise = mailJetRequestV3.request(paramsV3); mailJetResponseV3.then((res: Email.Response) => { const responseBody: object = res.body; }).catch((err: Error) => { // ignore }); // add template const paramsAddTemplate: object = { "Html-part": "

Hello {{var:name}}

", "Text-part": "Hello {{var:name}}" }; const mailJetRequestTemplate: Email.PostResource = connection.post('template'); const mailJetPostResource: Email.PostResource = mailJetRequestTemplate.id('762957'); const mailJetPostActionResource: Email.PostResource = mailJetPostResource.action("detailcontent"); const mailJetResponseTemplate: Promise = mailJetPostActionResource.request(paramsAddTemplate); mailJetResponseTemplate.then((res: Email.Response) => { const responseBody: object = res.body; }).catch((err: Error) => { // ignore }); // get all message const messageId = '576460753004591401'; const mailJetRequestMessages: Email.GetResource = connection.get('message'); const mailJetGetResource: Email.GetResource = mailJetRequestMessages.id(messageId); const mailJetResponseMessages: Promise = mailJetGetResource.request(); mailJetResponseMessages.then((res: Email.GetResponse) => { const responseBody: Email.GetResponseData = res.body; const count: number = responseBody.Count; const data: ReadonlyArray = responseBody.Data; const total: number = responseBody.Total; }).catch((err: Error) => { // ignore }); // put contact data const putParams: object = { Data: [{ Name: "Age", value: 30 }] }; const mailJetRequestPutData: Email.PutResource = connection.put('contactdata'); const mailJetPutResource: Email.PutResource = mailJetRequestPutData.id('1934644827'); const mailJetPutResponse: Promise = mailJetPutResource.request(putParams); mailJetPutResponse.then((res: Email.PutResponse) => { const responseBody: Email.PutResponseData = res.body; const count: number = res.body.Count; const data: ReadonlyArray = res.body.Data; const total: number = res.body.Total; }).catch((err: Error) => { // ignore }); // *** SMS API *** // // send SMS const smsConnectOptions: ConnectOptions = { url: 'api.mailjet.com', // default is the API url version: 'v4', // default is '/v3' perform_api_call: false // used for tests. default is true }; const smsConnection: SMS.Client = mailJet.connect("MJ_API_TOKEN", smsConnectOptions); const smsSend: SMS.PostResource = smsConnection.post('sms-send'); const smsData: SMS.SendParams = { Text: 'Have a nice SMS flight with Mailjet !', To: '+33600000000', From: 'MJPilot', }; const smsResponse: Promise = smsSend.request(smsData); smsResponse.then((res: SMS.SendResponse) => { const url: string = res.url; const body: SMS.PostResponseData = res.body; const from: string = body.From; const to: string = body.To; const text: string = body.Text; const messageId: string = body.MessageId; const smsCount: number = body.SmsCount; const creationTS: number = body.CreationTS; const sentTS: number = body.SentTS; const cost: SMS.ResponseCost = body.Cost; const costValue: number = cost.Value; const costCurrency: string = cost.Currency; const status: SMS.ResponseStatus = body.Status; const statusCode: number = status.Code; const statusName: string = status.Name; const statusDescription: string = status.Description; }).catch((err: Error) => { // ignore }); // export CSV const smsExport: SMS.PostResource = smsConnection.post('sms').action('export'); const exportResponsePromise: Promise = smsSend.request(); exportResponsePromise.then((res: SMS.ExportResponse) => { const body: SMS.ExportResponseData = res.body; const id: number = body.ID; const creationTS: number | undefined = body.CreationTS; const expirationTS: number | undefined = body.ExpirationTS; const uRL: string | undefined = body.URL; const fromTs: number | undefined = body.FromTs; const toTs: number | undefined = body.ToTs; const status: SMS.ResponseStatus = body.Status; const code: number = status.Code; const name: string = status.Name; const description: string = status.Description; }).catch((err: Error) => { // ignore }); // get SMS with limit and offset const nowMilliseconds = +new Date(); const getSmsParams: SMS.GetParams = { FromTS: nowMilliseconds, ToTS: nowMilliseconds }; const smsGetResource: SMS.GetResource = smsConnection.get('sms'); const smsGetResponsePromise: Promise = smsGetResource.request(getSmsParams); smsGetResponsePromise.then((res: SMS.GetResponse) => { const body: SMS.GetResponseData = res.body; const data: ReadonlyArray = body.Data; const from: string = data[0].From; const to: string = data[0].To; const messageId: string = data[0].MessageId; const creationTs: number = data[0].CreationTS; const sentTs: number = data[0].SentTS; const smsCount: number = data[0].SMSCount; const cost: SMS.ResponseCost = data[0].Cost; const value: number = cost.Value; const currency: string = cost.Currency; const status: SMS.ResponseStatus = data[0].Status; const code: number = status.Code; const name: string = status.Name; const description: string = status.Description; }).catch((err: Error) => { // ignore }); // get SMS count const smsActionResponse: SMS.GetResourceAction = smsGetResource.action('count'); const smsActionResponsePromise: Promise = smsActionResponse.request(); smsActionResponsePromise.then((res: SMS.GetResponseAction) => { const body: SMS.GetResponseActionData = res.body; const count: number = body.Count; }).catch((err: Error) => { // ignore }); // get exported CSV const getResourceActionId: SMS.GetResourceActionId = smsConnection.get('sms').action('export').id('160875105'); const exportResponseAction: Promise = getResourceActionId.request(); exportResponseAction.then((res: SMS.ExportResponse) => { // types allready checked }).catch((err: Error) => { // ignore });