@strapi/email 5.37.0 → 5.38.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.
Files changed (71) hide show
  1. package/dist/admin/constants.js.map +1 -1
  2. package/dist/admin/constants.mjs.map +1 -1
  3. package/dist/admin/index.js.map +1 -1
  4. package/dist/admin/index.mjs.map +1 -1
  5. package/dist/admin/pages/Settings.js +399 -47
  6. package/dist/admin/pages/Settings.js.map +1 -1
  7. package/dist/admin/pages/Settings.mjs +402 -50
  8. package/dist/admin/pages/Settings.mjs.map +1 -1
  9. package/dist/admin/shared/email-address-parser.js +245 -0
  10. package/dist/admin/shared/email-address-parser.js.map +1 -0
  11. package/dist/admin/shared/email-address-parser.mjs +243 -0
  12. package/dist/admin/shared/email-address-parser.mjs.map +1 -0
  13. package/dist/admin/translations/de.json.js +18 -2
  14. package/dist/admin/translations/de.json.js.map +1 -1
  15. package/dist/admin/translations/de.json.mjs +18 -2
  16. package/dist/admin/translations/de.json.mjs.map +1 -1
  17. package/dist/admin/translations/en.json.js +23 -1
  18. package/dist/admin/translations/en.json.js.map +1 -1
  19. package/dist/admin/translations/en.json.mjs +23 -1
  20. package/dist/admin/translations/en.json.mjs.map +1 -1
  21. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  22. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  23. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  24. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  25. package/dist/admin/utils/schema.js.map +1 -1
  26. package/dist/admin/utils/schema.mjs.map +1 -1
  27. package/dist/server/bootstrap.js.map +1 -1
  28. package/dist/server/bootstrap.mjs.map +1 -1
  29. package/dist/server/config.js.map +1 -1
  30. package/dist/server/config.mjs.map +1 -1
  31. package/dist/server/controllers/email.js +33 -1
  32. package/dist/server/controllers/email.js.map +1 -1
  33. package/dist/server/controllers/email.mjs +33 -1
  34. package/dist/server/controllers/email.mjs.map +1 -1
  35. package/dist/server/controllers/index.js.map +1 -1
  36. package/dist/server/controllers/index.mjs.map +1 -1
  37. package/dist/server/index.js +8 -8
  38. package/dist/server/index.js.map +1 -1
  39. package/dist/server/index.mjs.map +1 -1
  40. package/dist/server/middlewares/index.js.map +1 -1
  41. package/dist/server/middlewares/index.mjs.map +1 -1
  42. package/dist/server/middlewares/rateLimit.js.map +1 -1
  43. package/dist/server/middlewares/rateLimit.mjs.map +1 -1
  44. package/dist/server/routes/admin.js +18 -0
  45. package/dist/server/routes/admin.js.map +1 -1
  46. package/dist/server/routes/admin.mjs +18 -0
  47. package/dist/server/routes/admin.mjs.map +1 -1
  48. package/dist/server/routes/content-api.js.map +1 -1
  49. package/dist/server/routes/content-api.mjs.map +1 -1
  50. package/dist/server/routes/index.js.map +1 -1
  51. package/dist/server/routes/index.mjs.map +1 -1
  52. package/dist/server/routes/validation/email.js.map +1 -1
  53. package/dist/server/routes/validation/email.mjs.map +1 -1
  54. package/dist/server/services/email.js.map +1 -1
  55. package/dist/server/services/email.mjs +1 -1
  56. package/dist/server/services/email.mjs.map +1 -1
  57. package/dist/server/services/index.js.map +1 -1
  58. package/dist/server/services/index.mjs.map +1 -1
  59. package/dist/server/src/bootstrap.d.ts.map +1 -1
  60. package/dist/server/src/controllers/email.d.ts +1 -0
  61. package/dist/server/src/controllers/email.d.ts.map +1 -1
  62. package/dist/server/src/controllers/index.d.ts +1 -0
  63. package/dist/server/src/controllers/index.d.ts.map +1 -1
  64. package/dist/server/src/index.d.ts +1 -0
  65. package/dist/server/src/index.d.ts.map +1 -1
  66. package/dist/server/src/routes/admin.d.ts.map +1 -1
  67. package/dist/shared/email-address-parser.d.ts +81 -0
  68. package/dist/shared/email-address-parser.d.ts.map +1 -0
  69. package/dist/shared/types.d.ts +17 -0
  70. package/dist/shared/types.d.ts.map +1 -1
  71. package/package.json +7 -7
@@ -0,0 +1,81 @@
1
+ /**
2
+ * RFC-compliant Email Address Parser
3
+ *
4
+ * Supports:
5
+ * - RFC 5322: Internet Message Format (basic name <email> format)
6
+ * - RFC 2047: MIME encoded-words for non-ASCII characters
7
+ * - RFC 5322: Comments in parentheses
8
+ * - RFC 5322: Quoted strings with special characters
9
+ * - RFC 6531: Internationalized email addresses (UTF-8)
10
+ */
11
+ export interface ParsedEmailAddress {
12
+ /** Display name (decoded if RFC 2047 encoded) */
13
+ name: string | null;
14
+ /** Email address */
15
+ email: string;
16
+ /** Original unparsed string */
17
+ original: string;
18
+ }
19
+ /**
20
+ * Parses an email address string according to RFC 5322 and related RFCs
21
+ *
22
+ * Supported formats:
23
+ * 1. Simple email: "email@example.com"
24
+ * 2. Name with angle brackets: "Name <email@example.com>"
25
+ * 3. Quoted name: "\"Doe, John\" <email@example.com>"
26
+ * 4. RFC 2047 encoded: "=?UTF-8?B?...?= <email@example.com>"
27
+ * 5. With comment: "email@example.com (Display Name)"
28
+ * 6. Mixed: "\"Name\" <email@example.com> (comment)"
29
+ *
30
+ * @param emailString - The email address string to parse
31
+ * @returns Parsed email address with name, email, and original string
32
+ *
33
+ * @example
34
+ * parseEmailAddress('Strapi <no-reply@strapi.io>')
35
+ * // { name: 'Strapi', email: 'no-reply@strapi.io', original: '...' }
36
+ *
37
+ * @example
38
+ * parseEmailAddress('=?UTF-8?B?U3RyYXBp?= <no-reply@strapi.io>')
39
+ * // { name: 'Strapi', email: 'no-reply@strapi.io', original: '...' }
40
+ *
41
+ * @example
42
+ * parseEmailAddress('no-reply@strapi.io (Strapi Support)')
43
+ * // { name: 'Strapi Support', email: 'no-reply@strapi.io', original: '...' }
44
+ */
45
+ export declare const parseEmailAddress: (emailString: string | undefined | null) => ParsedEmailAddress;
46
+ /**
47
+ * Formats an email address according to RFC 5322
48
+ *
49
+ * @param name - Display name (will be quoted if contains special chars)
50
+ * @param email - Email address
51
+ * @returns Formatted email address string
52
+ *
53
+ * @example
54
+ * formatEmailAddress('Strapi', 'no-reply@strapi.io')
55
+ * // 'Strapi <no-reply@strapi.io>'
56
+ *
57
+ * @example
58
+ * formatEmailAddress('Doe, John', 'john@example.com')
59
+ * // '"Doe, John" <john@example.com>'
60
+ */
61
+ export declare const formatEmailAddress: (name: string | null, email: string) => string;
62
+ /**
63
+ * Validates an email address according to RFC 5322
64
+ * This is a simplified validation that covers most common cases
65
+ *
66
+ * @param email - Email address to validate
67
+ * @returns true if the email appears valid
68
+ */
69
+ export declare const isValidEmail: (email: string) => boolean;
70
+ /**
71
+ * Parses multiple email addresses separated by commas
72
+ * Handles quoted strings that may contain commas
73
+ *
74
+ * @param emailsString - Comma-separated email addresses
75
+ * @returns Array of parsed email addresses
76
+ *
77
+ * @example
78
+ * parseMultipleEmailAddresses('a@example.com, "Doe, John" <b@example.com>')
79
+ * // [{ name: null, email: 'a@example.com', ... }, { name: 'Doe, John', email: 'b@example.com', ... }]
80
+ */
81
+ export declare const parseMultipleEmailAddresses: (emailsString: string | undefined | null) => ParsedEmailAddress[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-address-parser.d.ts","sourceRoot":"","sources":["../../shared/email-address-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4KD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,kBA4D1E,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,SAAU,MAAM,GAAG,IAAI,SAAS,MAAM,KAAG,MAgBvE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,OAW5C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,iBACxB,MAAM,GAAG,SAAS,GAAG,IAAI,KACtC,kBAAkB,EAgDpB,CAAC"}
@@ -1,5 +1,22 @@
1
+ export interface ProviderCapabilities {
2
+ transport?: {
3
+ host?: string;
4
+ port?: number;
5
+ secure?: boolean;
6
+ pool?: boolean;
7
+ maxConnections?: number;
8
+ };
9
+ auth?: {
10
+ type?: string;
11
+ user?: string;
12
+ };
13
+ features?: string[];
14
+ }
1
15
  export interface EmailSettings {
2
16
  config: ConfigSettings;
17
+ supportsVerify: boolean;
18
+ capabilities?: ProviderCapabilities;
19
+ isIdle?: boolean;
3
20
  }
4
21
  export interface ConfigSettings {
5
22
  provider: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/email",
3
- "version": "5.37.0",
3
+ "version": "5.38.0",
4
4
  "description": "Easily configure your Strapi application to send emails.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,10 +56,10 @@
56
56
  "watch": "run -T rollup -c -w"
57
57
  },
58
58
  "dependencies": {
59
- "@strapi/design-system": "2.1.2",
60
- "@strapi/icons": "2.1.2",
61
- "@strapi/provider-email-sendmail": "5.37.0",
62
- "@strapi/utils": "5.37.0",
59
+ "@strapi/design-system": "2.2.0",
60
+ "@strapi/icons": "2.2.0",
61
+ "@strapi/provider-email-sendmail": "5.38.0",
62
+ "@strapi/utils": "5.38.0",
63
63
  "koa2-ratelimit": "^1.1.3",
64
64
  "lodash": "4.17.23",
65
65
  "react-intl": "6.6.2",
@@ -68,8 +68,8 @@
68
68
  "zod": "3.25.67"
69
69
  },
70
70
  "devDependencies": {
71
- "@strapi/admin": "5.37.0",
72
- "@strapi/types": "5.37.0",
71
+ "@strapi/admin": "5.38.0",
72
+ "@strapi/types": "5.38.0",
73
73
  "@testing-library/react": "16.3.0",
74
74
  "@types/koa": "2.13.4",
75
75
  "@types/lodash": "^4.14.191",