UNPKG

@sendgrid/helpers

Version:

Twilio SendGrid NodeJS internal helpers

374 lines (313 loc) 7.06 kB
import {AttachmentData, AttachmentJSON} from "./attachment"; import {EmailData, EmailJSON} from "./email-address"; import Personalization from "./personalization"; import {PersonalizationData, PersonalizationJSON} from "./personalization"; export interface MailContent { type: string; value: string; } export interface ASMOptions { groupId: number; groupsToDisplay?: number[]; } export interface ASMOptionsJSON { group_id: number; groups_to_display?: number[]; } export interface MailSettings { bcc?: { enable?: boolean; email?: string; }; bypassListManagement?: { enable?: boolean; }; bypassSpamManagement?: { enable?: boolean; }; bypassBounceManagement?: { enable?: boolean; }; bypassUnsubscribeManagement?: { enable?: boolean; }; footer?: { enable?: boolean; text?: string; html?: string; }; sandboxMode?: { enable?: boolean; }; spamCheck?: { enable?: boolean; threshold?: number; postToUrl?: string; }; } export interface MailSettingsJSON { bcc?: { enable?: boolean; email?: string; }; bypass_list_management?: { enable?: boolean; }; footer?: { enable?: boolean; text?: string; html?: string; }; sandbox_mode?: { enable?: boolean; }; spam_check?: { enable?: boolean; threshold?: number; post_to_url?: string; }; } export interface TrackingSettings { clickTracking?: { enable?: boolean; enableText?: boolean; }; openTracking?: { enable?: boolean; substitutionTag?: string; }; subscriptionTracking?: { enable?: boolean; text?: string; html?: string; substitutionTag?: string; }; ganalytics?: { enable?: boolean; utmSource?: string; utmMedium?: string; utmTerm?: string; utmContent?: string; utmCampaign?: string; }; } export interface TrackingSettingsJSON { click_tracking?: { enable?: boolean; enable_text?: boolean; }; open_tracking?: { enable?: boolean; substitution_tag?: string; }; subscription_tracking?: { enable?: boolean; text?: string; html?: string; substitution_tag?: string; }; ganalytics?: { enable?: boolean; utm_source?: string; utm_medium?: string; utm_term?: string; utm_content?: string; utm_campaign?: string; }; } export interface MailData { to?: EmailData|EmailData[], cc?: EmailData|EmailData[], bcc?: EmailData|EmailData[], from: EmailData, replyTo?: EmailData, sendAt?: number, subject?: string, text?: string, html?: string, content?: MailContent[], templateId?: string, personalizations?: PersonalizationData[], attachments?: AttachmentData[], ipPoolName?: string, batchId?: string, sections?: { [key: string]: string }, headers?: { [key: string]: string }, categories?: string[], category?: string, customArgs?: { [key: string]: any }, asm?: ASMOptions, mailSettings?: MailSettings, trackingSettings?: TrackingSettings, substitutions?: { [key: string]: string }, substitutionWrappers?: string[], isMultiple?: boolean, dynamicTemplateData?: { [key: string]: any }, hideWarnings?: boolean, replyToList?: EmailJSON | EmailJSON[], } export type MailDataRequired = MailData & ( { text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } }); export interface MailJSON { from: EmailJSON; subject: string; content: MailContent[]; personalizations: PersonalizationJSON[]; attachments?: AttachmentJSON[]; categories?: string[]; headers?: { [key: string]: string }; mail_settings?: MailSettingsJSON; tracking_settings?: TrackingSettingsJSON; custom_args?: { [key: string]: string }; sections?: { [key: string]: string }; asm?: ASMOptionsJSON; reply_to?: EmailJSON; send_at?: number; batch_id?: string; template_id?: string; ip_pool_name?: string; reply_to_list?: EmailJSON[]; } export default class Mail { constructor(data?: MailData); /** * Build from data */ fromData(data: MailData): void; /** * Set from email */ setFrom(from: EmailData): void; /** * Set reply to */ setReplyTo(replyTo: EmailData): void; /** * Set subject */ setSubject(subject: string): void; /** * Set send at */ setSendAt(sendAt: number): void; /** * Set template ID */ setTemplateId(templateId: string): void; /** * Set batch ID */ setBatchId(batchId: string): void; /** * Set IP pool name */ setIpPoolName(ipPoolName: string): void; /** * Set ASM */ setAsm(asm: ASMOptions): void; /** * Set personalizations */ setPersonalizations(personalizations: PersonalizationData[]): void; /** * Add personalization */ addPersonalization(personalization: PersonalizationData): void; /** * Convenience method for quickly creating personalizations */ addTo(to: EmailData|EmailData[], cc: EmailData|EmailData[], bcc: EmailData|EmailData[]): void; /** * Set substitutions */ setSubstitutions(substitutions: { [key: string]: string }): void; /** * Set substitution wrappers */ setSubstitutionWrappers(wrappers: string[]): void; /** * Helper which applies globally set substitutions to personalizations */ applySubstitutions(personalization: Personalization): void; /** * Set content */ setContent(content: MailContent[]): void; /** * Add content */ addContent(content: MailContent): void; /** * Add text content */ addTextContent(text: string): void; /** * Add HTML content */ addHtmlContent(html: string): void; /** * Set attachments */ setAttachments(attachments: AttachmentData[]): void; /** * Add attachment */ addAttachment(attachment: AttachmentData): void; /** * Set categories */ setCategories(categories: string[]): void; /** * Add category */ addCategory(category: string): void; /** * Set headers */ setHeaders(headers: { [key: string]: string }): void; /** * Add a header */ addHeader(key: string, value: string): void; /** * Set sections */ setSections(sections: { [key: string]: string }): void; /** * Set custom args */ setCustomArgs(customArgs: { [key: string]: string }): void; /** * Set tracking settings */ setTrackingSettings(settings: TrackingSettings): void; /** * Set mail settings */ setMailSettings(settings: MailSettings): void; /** * Set hide warnings */ setHideWarnings(hide: boolean): void; /** * To JSON */ toJSON(): MailJSON; /** * Create a Mail instance from given data */ static create(data: MailData): Mail; /** * Create a Mail instance from given data */ static create(data: Mail): Mail; /** * Create a Mail instance from given data */ static create(data: MailData[]): Mail[]; /** * Set reply_to_list header from given data */ setReplyToList(replyToList: EmailJSON[]): void; }