@strapi/provider-email-nodemailer 5.48.0 → 5.49.0

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/index.js CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  var nodemailer = require('nodemailer');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var nodemailer__default = /*#__PURE__*/_interopDefault(nodemailer);
8
+
5
9
  function getCapabilitiesFromOptions(opts) {
6
10
  const capabilities = {};
7
11
  const features = [];
@@ -40,7 +44,7 @@ function getCapabilitiesFromOptions(opts) {
40
44
  }
41
45
  var index = {
42
46
  init (providerOptions, settings) {
43
- const transporter = nodemailer.createTransport(providerOptions);
47
+ const transporter = nodemailer__default.default.createTransport(providerOptions);
44
48
  return {
45
49
  send (options) {
46
50
  const message = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import nodemailer from 'nodemailer';\nimport type { Transporter, SendMailOptions, SentMessageInfo } from 'nodemailer';\n\ninterface Settings {\n defaultFrom: string;\n defaultReplyTo: string;\n}\n\ninterface SendOptions {\n // --- Core addressing ---\n from?: string;\n to: string;\n cc?: string;\n bcc?: string;\n replyTo?: string;\n /** Address that appears in the Sender: field (for \"on behalf of\" emails) */\n sender?: SendMailOptions['sender'];\n subject: string;\n\n // --- Content ---\n text?: string;\n html?: string;\n /** Apple Watch specific HTML version of the message */\n watchHtml?: SendMailOptions['watchHtml'];\n /** AMP4Email content for interactive emails */\n amp?: SendMailOptions['amp'];\n attachments?: SendMailOptions['attachments'];\n /**\n * Alternative content representations (e.g. Markdown alongside HTML).\n * Uses the same format as attachments. Email clients pick the best match.\n */\n alternatives?: SendMailOptions['alternatives'];\n\n // --- Headers & metadata ---\n /** Custom SMTP headers (e.g. X-Priority, X-Mailer, business-specific headers) */\n headers?: SendMailOptions['headers'];\n /** Email priority: 'high', 'normal', 'low' */\n priority?: SendMailOptions['priority'];\n /** Custom Message-ID value (random value generated if not set) */\n messageId?: SendMailOptions['messageId'];\n /** Custom Date value (current UTC string used if not set) */\n date?: SendMailOptions['date'];\n /** Control or disable the X-Mailer header (false to remove, string to override) */\n xMailer?: SendMailOptions['xMailer'];\n\n // --- Threading ---\n /** Message-ID of the email being replied to (for conversation threading) */\n inReplyTo?: SendMailOptions['inReplyTo'];\n /** Message-ID list this email references (for conversation threading) */\n references?: SendMailOptions['references'];\n\n // --- Encoding ---\n /** Force content-transfer-encoding: 'quoted-printable' or 'base64' */\n textEncoding?: SendMailOptions['textEncoding'];\n /** Encoding for the message (e.g. 'base64', 'hex') */\n encoding?: SendMailOptions['encoding'];\n /** Method to normalize header key casing */\n normalizeHeaderKey?: SendMailOptions['normalizeHeaderKey'];\n\n // --- Advanced features ---\n /**\n * Calendar event invitation (iCalendar format).\n * @example { method: 'REQUEST', content: icsString }\n */\n icalEvent?: SendMailOptions['icalEvent'];\n /**\n * RFC 2369 List-* headers for mailing lists and newsletters.\n * Email clients like Gmail/Outlook show an \"Unsubscribe\" button when set.\n * @example { unsubscribe: { url: 'https://example.com/unsubscribe', comment: 'Unsubscribe' } }\n */\n list?: SendMailOptions['list'];\n /**\n * Custom SMTP envelope for controlling MAIL FROM and RCPT TO independently.\n * @example { from: 'bounce+123@example.com', to: 'recipient@example.com' }\n */\n envelope?: SendMailOptions['envelope'];\n /** Per-message DKIM signing options (overrides transport-level DKIM) */\n dkim?: SendMailOptions['dkim'];\n /** Convert data: URIs in HTML to embedded CID attachments automatically */\n attachDataUrls?: SendMailOptions['attachDataUrls'];\n\n // --- Security ---\n /** Fail with an error when content tries to load from a URL */\n disableUrlAccess?: SendMailOptions['disableUrlAccess'];\n /** Fail with an error when content tries to load from a file path */\n disableFileAccess?: SendMailOptions['disableFileAccess'];\n\n // --- Raw MIME ---\n /**\n * Pre-built MIME message. When set, skips message generation entirely.\n * Address headers and envelope must still be set separately.\n */\n raw?: SendMailOptions['raw'];\n\n // --- DSN & Auth (not in @types/nodemailer but supported by nodemailer) ---\n /**\n * Delivery Status Notification (DSN) configuration.\n * @example { id: 'msg-123', return: 'headers', notify: 'success', recipient: 'sender@example.com' }\n */\n dsn?: {\n id?: string;\n return?: 'headers' | 'full';\n notify?: string | string[];\n recipient?: string;\n };\n /**\n * Per-message OAuth2 authentication for sending on behalf of different users.\n * Requires the transporter to be configured with type: 'OAuth2'.\n * @example { user: 'user@gmail.com', refreshToken: '1/xxx', accessToken: 'ya29.xxx' }\n */\n auth?: {\n user?: string;\n refreshToken?: string;\n accessToken?: string;\n expires?: number;\n };\n}\n\ntype ProviderOptions = Parameters<typeof nodemailer.createTransport>[0];\n\ninterface ProviderCapabilities {\n transport?: {\n host?: string;\n port?: number;\n secure?: boolean;\n pool?: boolean;\n maxConnections?: number;\n };\n auth?: {\n type?: string;\n user?: string;\n };\n features?: string[];\n}\n\nfunction getCapabilitiesFromOptions(opts: ProviderOptions): ProviderCapabilities {\n const capabilities: ProviderCapabilities = {};\n const features: string[] = [];\n\n if (opts && typeof opts === 'object') {\n const options = opts as Record<string, unknown>;\n\n if (options.host || options.port) {\n capabilities.transport = {\n host: typeof options.host === 'string' ? options.host : undefined,\n port: typeof options.port === 'number' ? options.port : undefined,\n secure: typeof options.secure === 'boolean' ? options.secure : undefined,\n pool: typeof options.pool === 'boolean' ? options.pool : undefined,\n maxConnections:\n typeof options.maxConnections === 'number' ? options.maxConnections : undefined,\n };\n }\n\n if (options.auth && typeof options.auth === 'object') {\n const auth = options.auth as Record<string, unknown>;\n const authType = typeof auth.type === 'string' ? auth.type : undefined;\n capabilities.auth = {\n type: authType || (auth.user ? 'login' : undefined),\n user: typeof auth.user === 'string' ? auth.user : undefined,\n };\n if (authType === 'OAuth2') {\n features.push('oauth2');\n }\n }\n\n if (options.dkim) features.push('dkim');\n if (options.pool) features.push('pool');\n if (options.proxy) features.push('proxy');\n if (options.rateLimit) features.push('rateLimiting');\n if (options.requireTLS) features.push('requireTLS');\n }\n\n if (features.length > 0) {\n capabilities.features = features;\n }\n\n return capabilities;\n}\n\nexport default {\n init(providerOptions: ProviderOptions, settings: Settings) {\n const transporter: Transporter = nodemailer.createTransport(providerOptions);\n\n return {\n send(options: SendOptions): Promise<SentMessageInfo> {\n const message: SendMailOptions = {\n from: options.from ?? settings.defaultFrom,\n to: options.to,\n cc: options.cc,\n bcc: options.bcc,\n replyTo: options.replyTo ?? settings.defaultReplyTo,\n subject: options.subject,\n text: options.text ?? options.html,\n html: options.html ?? options.text,\n };\n\n // Addressing\n if (options.sender) {\n message.sender = options.sender;\n }\n\n // Content\n if (options.attachments) {\n message.attachments = options.attachments;\n }\n if (options.alternatives) {\n message.alternatives = options.alternatives;\n }\n if (options.watchHtml) {\n message.watchHtml = options.watchHtml;\n }\n if (options.amp) {\n message.amp = options.amp;\n }\n\n // Headers & metadata\n if (options.headers) {\n message.headers = options.headers;\n }\n if (options.priority) {\n message.priority = options.priority;\n }\n if (options.messageId) {\n message.messageId = options.messageId;\n }\n if (options.date) {\n message.date = options.date;\n }\n if (options.xMailer !== undefined) {\n message.xMailer = options.xMailer;\n }\n\n // Threading\n if (options.inReplyTo) {\n message.inReplyTo = options.inReplyTo;\n }\n if (options.references) {\n message.references = options.references;\n }\n\n // Encoding\n if (options.textEncoding) {\n message.textEncoding = options.textEncoding;\n }\n if (options.encoding) {\n message.encoding = options.encoding;\n }\n if (options.normalizeHeaderKey) {\n message.normalizeHeaderKey = options.normalizeHeaderKey;\n }\n\n // Advanced features\n if (options.icalEvent) {\n message.icalEvent = options.icalEvent;\n }\n if (options.list) {\n message.list = options.list;\n }\n if (options.envelope) {\n message.envelope = options.envelope;\n }\n if (options.dkim) {\n message.dkim = options.dkim;\n }\n if (options.attachDataUrls) {\n message.attachDataUrls = options.attachDataUrls;\n }\n\n // Security\n if (options.disableUrlAccess) {\n message.disableUrlAccess = options.disableUrlAccess;\n }\n if (options.disableFileAccess) {\n message.disableFileAccess = options.disableFileAccess;\n }\n\n // Raw MIME\n if (options.raw) {\n message.raw = options.raw;\n }\n\n // DSN and per-message auth (supported by nodemailer, not fully typed)\n if (options.dsn) {\n (message as Record<string, unknown>).dsn = options.dsn;\n }\n if (options.auth) {\n (message as Record<string, unknown>).auth = {\n user: options.auth.user,\n refreshToken: options.auth.refreshToken,\n accessToken: options.auth.accessToken,\n ...(options.auth.expires != null ? { expires: options.auth.expires } : {}),\n };\n }\n\n return transporter.sendMail(message);\n },\n\n async verify(): Promise<true> {\n return transporter.verify();\n },\n\n isIdle(): boolean {\n return typeof transporter.isIdle === 'function' ? transporter.isIdle() : true;\n },\n\n close(): void {\n transporter.close();\n },\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilitiesFromOptions(providerOptions);\n },\n };\n },\n};\n"],"names":["getCapabilitiesFromOptions","opts","capabilities","features","options","host","port","transport","undefined","secure","pool","maxConnections","auth","authType","type","user","push","dkim","proxy","rateLimit","requireTLS","length","init","providerOptions","settings","transporter","nodemailer","createTransport","send","message","from","defaultFrom","to","cc","bcc","replyTo","defaultReplyTo","subject","text","html","sender","attachments","alternatives","watchHtml","amp","headers","priority","messageId","date","xMailer","inReplyTo","references","textEncoding","encoding","normalizeHeaderKey","icalEvent","list","envelope","attachDataUrls","disableUrlAccess","disableFileAccess","raw","dsn","refreshToken","accessToken","expires","sendMail","verify","isIdle","close","getCapabilities"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import nodemailer from 'nodemailer';\nimport type { Transporter, SendMailOptions, SentMessageInfo } from 'nodemailer';\n\ninterface Settings {\n defaultFrom: string;\n defaultReplyTo: string;\n}\n\ninterface SendOptions {\n // --- Core addressing ---\n from?: string;\n to: string;\n cc?: string;\n bcc?: string;\n replyTo?: string;\n /** Address that appears in the Sender: field (for \"on behalf of\" emails) */\n sender?: SendMailOptions['sender'];\n subject: string;\n\n // --- Content ---\n text?: string;\n html?: string;\n /** Apple Watch specific HTML version of the message */\n watchHtml?: SendMailOptions['watchHtml'];\n /** AMP4Email content for interactive emails */\n amp?: SendMailOptions['amp'];\n attachments?: SendMailOptions['attachments'];\n /**\n * Alternative content representations (e.g. Markdown alongside HTML).\n * Uses the same format as attachments. Email clients pick the best match.\n */\n alternatives?: SendMailOptions['alternatives'];\n\n // --- Headers & metadata ---\n /** Custom SMTP headers (e.g. X-Priority, X-Mailer, business-specific headers) */\n headers?: SendMailOptions['headers'];\n /** Email priority: 'high', 'normal', 'low' */\n priority?: SendMailOptions['priority'];\n /** Custom Message-ID value (random value generated if not set) */\n messageId?: SendMailOptions['messageId'];\n /** Custom Date value (current UTC string used if not set) */\n date?: SendMailOptions['date'];\n /** Control or disable the X-Mailer header (false to remove, string to override) */\n xMailer?: SendMailOptions['xMailer'];\n\n // --- Threading ---\n /** Message-ID of the email being replied to (for conversation threading) */\n inReplyTo?: SendMailOptions['inReplyTo'];\n /** Message-ID list this email references (for conversation threading) */\n references?: SendMailOptions['references'];\n\n // --- Encoding ---\n /** Force content-transfer-encoding: 'quoted-printable' or 'base64' */\n textEncoding?: SendMailOptions['textEncoding'];\n /** Encoding for the message (e.g. 'base64', 'hex') */\n encoding?: SendMailOptions['encoding'];\n /** Method to normalize header key casing */\n normalizeHeaderKey?: SendMailOptions['normalizeHeaderKey'];\n\n // --- Advanced features ---\n /**\n * Calendar event invitation (iCalendar format).\n * @example { method: 'REQUEST', content: icsString }\n */\n icalEvent?: SendMailOptions['icalEvent'];\n /**\n * RFC 2369 List-* headers for mailing lists and newsletters.\n * Email clients like Gmail/Outlook show an \"Unsubscribe\" button when set.\n * @example { unsubscribe: { url: 'https://example.com/unsubscribe', comment: 'Unsubscribe' } }\n */\n list?: SendMailOptions['list'];\n /**\n * Custom SMTP envelope for controlling MAIL FROM and RCPT TO independently.\n * @example { from: 'bounce+123@example.com', to: 'recipient@example.com' }\n */\n envelope?: SendMailOptions['envelope'];\n /** Per-message DKIM signing options (overrides transport-level DKIM) */\n dkim?: SendMailOptions['dkim'];\n /** Convert data: URIs in HTML to embedded CID attachments automatically */\n attachDataUrls?: SendMailOptions['attachDataUrls'];\n\n // --- Security ---\n /** Fail with an error when content tries to load from a URL */\n disableUrlAccess?: SendMailOptions['disableUrlAccess'];\n /** Fail with an error when content tries to load from a file path */\n disableFileAccess?: SendMailOptions['disableFileAccess'];\n\n // --- Raw MIME ---\n /**\n * Pre-built MIME message. When set, skips message generation entirely.\n * Address headers and envelope must still be set separately.\n */\n raw?: SendMailOptions['raw'];\n\n // --- DSN & Auth (not in @types/nodemailer but supported by nodemailer) ---\n /**\n * Delivery Status Notification (DSN) configuration.\n * @example { id: 'msg-123', return: 'headers', notify: 'success', recipient: 'sender@example.com' }\n */\n dsn?: {\n id?: string;\n return?: 'headers' | 'full';\n notify?: string | string[];\n recipient?: string;\n };\n /**\n * Per-message OAuth2 authentication for sending on behalf of different users.\n * Requires the transporter to be configured with type: 'OAuth2'.\n * @example { user: 'user@gmail.com', refreshToken: '1/xxx', accessToken: 'ya29.xxx' }\n */\n auth?: {\n user?: string;\n refreshToken?: string;\n accessToken?: string;\n expires?: number;\n };\n}\n\ntype ProviderOptions = Parameters<typeof nodemailer.createTransport>[0];\n\ninterface ProviderCapabilities {\n transport?: {\n host?: string;\n port?: number;\n secure?: boolean;\n pool?: boolean;\n maxConnections?: number;\n };\n auth?: {\n type?: string;\n user?: string;\n };\n features?: string[];\n}\n\nfunction getCapabilitiesFromOptions(opts: ProviderOptions): ProviderCapabilities {\n const capabilities: ProviderCapabilities = {};\n const features: string[] = [];\n\n if (opts && typeof opts === 'object') {\n const options = opts as Record<string, unknown>;\n\n if (options.host || options.port) {\n capabilities.transport = {\n host: typeof options.host === 'string' ? options.host : undefined,\n port: typeof options.port === 'number' ? options.port : undefined,\n secure: typeof options.secure === 'boolean' ? options.secure : undefined,\n pool: typeof options.pool === 'boolean' ? options.pool : undefined,\n maxConnections:\n typeof options.maxConnections === 'number' ? options.maxConnections : undefined,\n };\n }\n\n if (options.auth && typeof options.auth === 'object') {\n const auth = options.auth as Record<string, unknown>;\n const authType = typeof auth.type === 'string' ? auth.type : undefined;\n capabilities.auth = {\n type: authType || (auth.user ? 'login' : undefined),\n user: typeof auth.user === 'string' ? auth.user : undefined,\n };\n if (authType === 'OAuth2') {\n features.push('oauth2');\n }\n }\n\n if (options.dkim) features.push('dkim');\n if (options.pool) features.push('pool');\n if (options.proxy) features.push('proxy');\n if (options.rateLimit) features.push('rateLimiting');\n if (options.requireTLS) features.push('requireTLS');\n }\n\n if (features.length > 0) {\n capabilities.features = features;\n }\n\n return capabilities;\n}\n\nexport default {\n init(providerOptions: ProviderOptions, settings: Settings) {\n const transporter: Transporter = nodemailer.createTransport(providerOptions);\n\n return {\n send(options: SendOptions): Promise<SentMessageInfo> {\n const message: SendMailOptions = {\n from: options.from ?? settings.defaultFrom,\n to: options.to,\n cc: options.cc,\n bcc: options.bcc,\n replyTo: options.replyTo ?? settings.defaultReplyTo,\n subject: options.subject,\n text: options.text ?? options.html,\n html: options.html ?? options.text,\n };\n\n // Addressing\n if (options.sender) {\n message.sender = options.sender;\n }\n\n // Content\n if (options.attachments) {\n message.attachments = options.attachments;\n }\n if (options.alternatives) {\n message.alternatives = options.alternatives;\n }\n if (options.watchHtml) {\n message.watchHtml = options.watchHtml;\n }\n if (options.amp) {\n message.amp = options.amp;\n }\n\n // Headers & metadata\n if (options.headers) {\n message.headers = options.headers;\n }\n if (options.priority) {\n message.priority = options.priority;\n }\n if (options.messageId) {\n message.messageId = options.messageId;\n }\n if (options.date) {\n message.date = options.date;\n }\n if (options.xMailer !== undefined) {\n message.xMailer = options.xMailer;\n }\n\n // Threading\n if (options.inReplyTo) {\n message.inReplyTo = options.inReplyTo;\n }\n if (options.references) {\n message.references = options.references;\n }\n\n // Encoding\n if (options.textEncoding) {\n message.textEncoding = options.textEncoding;\n }\n if (options.encoding) {\n message.encoding = options.encoding;\n }\n if (options.normalizeHeaderKey) {\n message.normalizeHeaderKey = options.normalizeHeaderKey;\n }\n\n // Advanced features\n if (options.icalEvent) {\n message.icalEvent = options.icalEvent;\n }\n if (options.list) {\n message.list = options.list;\n }\n if (options.envelope) {\n message.envelope = options.envelope;\n }\n if (options.dkim) {\n message.dkim = options.dkim;\n }\n if (options.attachDataUrls) {\n message.attachDataUrls = options.attachDataUrls;\n }\n\n // Security\n if (options.disableUrlAccess) {\n message.disableUrlAccess = options.disableUrlAccess;\n }\n if (options.disableFileAccess) {\n message.disableFileAccess = options.disableFileAccess;\n }\n\n // Raw MIME\n if (options.raw) {\n message.raw = options.raw;\n }\n\n // DSN and per-message auth (supported by nodemailer, not fully typed)\n if (options.dsn) {\n (message as Record<string, unknown>).dsn = options.dsn;\n }\n if (options.auth) {\n (message as Record<string, unknown>).auth = {\n user: options.auth.user,\n refreshToken: options.auth.refreshToken,\n accessToken: options.auth.accessToken,\n ...(options.auth.expires != null ? { expires: options.auth.expires } : {}),\n };\n }\n\n return transporter.sendMail(message);\n },\n\n async verify(): Promise<true> {\n return transporter.verify();\n },\n\n isIdle(): boolean {\n return typeof transporter.isIdle === 'function' ? transporter.isIdle() : true;\n },\n\n close(): void {\n transporter.close();\n },\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilitiesFromOptions(providerOptions);\n },\n };\n },\n};\n"],"names":["getCapabilitiesFromOptions","opts","capabilities","features","options","host","port","transport","undefined","secure","pool","maxConnections","auth","authType","type","user","push","dkim","proxy","rateLimit","requireTLS","length","init","providerOptions","settings","transporter","nodemailer","createTransport","send","message","from","defaultFrom","to","cc","bcc","replyTo","defaultReplyTo","subject","text","html","sender","attachments","alternatives","watchHtml","amp","headers","priority","messageId","date","xMailer","inReplyTo","references","textEncoding","encoding","normalizeHeaderKey","icalEvent","list","envelope","attachDataUrls","disableUrlAccess","disableFileAccess","raw","dsn","refreshToken","accessToken","expires","sendMail","verify","isIdle","close","getCapabilities"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/provider-email-nodemailer",
3
- "version": "5.48.0",
3
+ "version": "5.49.0",
4
4
  "description": "Nodemailer provider for Strapi",
5
5
  "keywords": [
6
6
  "strapi",
@@ -72,15 +72,15 @@
72
72
  "watch": "run -T rollup -c -w"
73
73
  },
74
74
  "dependencies": {
75
- "nodemailer": "8.0.5"
75
+ "nodemailer": "8.0.9"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@types/nodemailer": "7.0.11",
79
- "eslint-config-custom": "5.48.0",
80
- "tsconfig": "5.48.0"
79
+ "eslint-config-custom": "5.49.0",
80
+ "tsconfig": "5.49.0"
81
81
  },
82
82
  "engines": {
83
- "node": ">=20.0.0 <=24.x.x",
83
+ "node": ">=20.0.0 <=26.x.x",
84
84
  "npm": ">=6.0.0"
85
85
  }
86
86
  }