Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
0008696
docs(backend): correct TypeScript code fences in TS tabs (controllers…
web-flow Nov 20, 2025
49a15fb
docs(bundlers): clarify webpack config example rename and JS/TS filen…
web-flow Nov 20, 2025
9502ba1
docs(routes): add guidance to prefer fully-qualified handler names in…
web-flow Nov 20, 2025
8ad2c1f
docs(api-tokens): add concise security tip (least privilege, rotation…
web-flow Nov 20, 2025
aff6acc
docs(controllers): add caution about validateQuery/sanitizeQuery/sani…
web-flow Nov 20, 2025
afa9417
docs(policies): clarify scoped policy folders and fix example path
web-flow Nov 20, 2025
1badc73
docs(webhooks): add signature verification tip and fix TS config path
web-flow Nov 20, 2025
8406c4f
docs(theme-extension): add minimal TS example for theme.light and the…
web-flow Nov 20, 2025
9162e3e
docs(wysiwyg): add next steps tip (plugin first, custom field for dee…
web-flow Nov 20, 2025
5e20848
docs(middlewares): add tip to list registered middlewares (discovery …
web-flow Nov 20, 2025
7b79f9b
docs(models): add TL;DR with emphasis on content shape and Document S…
web-flow Nov 20, 2025
4fc26e0
docs(locales-translations): fix typo and use proper js/ts fences inst…
web-flow Nov 20, 2025
2d1e93f
docs(logos): add TL;DR and guidance (SVG preferred, light/dark variants)
web-flow Nov 20, 2025
01301f6
Limit PR scope based on title; keep only intended doc(s); revert unre…
web-flow Nov 20, 2025
c9d7eee
Email docs: add TypeScript provider config alongside JS via Tabs; add…
web-flow Nov 20, 2025
d501063
Merge main into repo/docs-email-add-ts-and-deliverability-tip to refr…
web-flow Nov 20, 2025
6dc6430
Email docs: fix MDX/MD tab closure and quote literals; resolve Vercel…
web-flow Nov 20, 2025
48d1a88
Fix tabs
pwizla Nov 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions docusaurus/docs/cms/features/email.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,10 @@ npm install @strapi/provider-email-sendgrid --save

</Tabs>

:::tip Deliverability
For best deliverability, configure SPF/DKIM with your email provider and ensure the `defaultFrom` domain aligns with the domain you verified with the provider.
:::

##### Configuring providers

Newly installed providers are enabled and configured in [the `/config/plugins` file](/cms/configurations/plugins). If this file does not exist you must create it.
Expand Down Expand Up @@ -205,6 +209,9 @@ You can set a specific configuration in the `/config/env/{env}/plugins.js|ts` co

Some providers expose SMTP-style connection details instead of (or in addition to) an API key. Add those values in `providerOptions` so Strapi can reach the provider host. For instance, the community Nodemailer provider expects the host, port, and authentication credentials:

<Tabs groupId="js-ts">
<TabItem value="js" label="JavaScript">

```js title="/config/plugins.js"
module.exports = ({ env }) => ({
email: {
Expand All @@ -228,6 +235,30 @@ module.exports = ({ env }) => ({
});
```

</TabItem>

<TabItem value="ts" label="TypeScript">

```ts title="/config/plugins.ts"
export default ({ env }) => ({
email: {
config: {
provider: 'sendmail', // replace with your provider
providerOptions: {
// ... provider-specific options
},
settings: {
defaultFrom: 'no-reply@example.com',
defaultReplyTo: 'support@example.com',
},
},
},
});
```

</TabItem>
</Tabs>

If your provider gives you a single URL instead of host and port values, pass that URL (for example `https://api.eu.mailgun.net`) in `providerOptions` using the key the package expects.

##### Creating providers
Expand Down
21 changes: 21 additions & 0 deletions docusaurus/static/llms-code.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20889,6 +20889,27 @@ module.exports = ({ env }) => ({
});
```

---
Language: TypeScript
File path: /config/plugins.ts

```ts
export default ({ env }) => ({
email: {
config: {
provider: 'sendmail', // replace with your provider
providerOptions: {
// ... provider-specific options
},
settings: {
defaultFrom: 'no-reply@example.com',
defaultReplyTo: 'support@example.com',
},
},
},
});
```


## Creating providers
Description: The interface that must be exported depends on the plugin you are developing the provider for.
Expand Down
27 changes: 5 additions & 22 deletions docusaurus/static/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8311,6 +8311,10 @@ The Email feature only handles outbound delivery. Receiving or parsing incoming

</Tabs>

:::tip Deliverability
For best deliverability, configure SPF/DKIM with your email provider and ensure the `defaultFrom` domain aligns with the domain you verified with the provider.
:::

##### Configuring providers

Newly installed providers are enabled and configured in [the `/config/plugins` file](/cms/configurations/plugins). If this file does not exist you must create it.
Expand All @@ -8335,28 +8339,7 @@ You can set a specific configuration in the `/config/env/{env}/plugins.js|ts` co

Some providers expose SMTP-style connection details instead of (or in addition to) an API key. Add those values in `providerOptions` so Strapi can reach the provider host. For instance, the community Nodemailer provider expects the host, port, and authentication credentials:

```js title="/config/plugins.js"
module.exports = ({ env }) => ({
email: {
config: {
provider: 'nodemailer',
providerOptions: {
host: env('SMTP_HOST'),
port: env.int('SMTP_PORT', 587),
secure: false, // Use `true` for port 465
auth: {
user: env('SMTP_USERNAME'),
pass: env('SMTP_PASSWORD'),
},
},
settings: {
defaultFrom: 'no-reply@example.com',
defaultReplyTo: 'support@example.com',
},
},
},
});
```
</Tabs>

If your provider gives you a single URL instead of host and port values, pass that URL (for example `https://api.eu.mailgun.net`) in `providerOptions` using the key the package expects.

Expand Down