@bztes/strapi-provider-email-gmail-api
v4.0.3
Published
Strapi email provider for Gmail using googleapi and OAuth 2.0
Downloads
59
Maintainers
Readme
strapi-provider-email-gmail-api
Yet another Strapi email provider for Gmail using OAuth 2.0 ;)
Installation
It's required to install this package with a different alias so that it belongs to the @strapi scope.
# npm
npm i @strapi/provider-email-gmail-api@npm:@bztes/strapi-provider-email-gmail-api
# or yarn
yarn add @strapi/provider-email-gmail-api@npm:@bztes/strapi-provider-email-gmail-api
The package.json
should then contain:
"dependencies": {
"@strapi/provider-email-gmail-api": "npm:@bztes/strapi-provider-email-gmail-api@^4.0.0",
}
Preparing Google API
Enable the Gmail API with OAuth authentication in 5 steps
Create a new Project
- Open the Google Console
- Create a new Project
Enable Gmail API
- In the Google Console select 'APIs & Services' -> 'Library'
- Search for 'Gmail' and click on enable
Configure OAuth consent screen
- In the Google Console select 'APIs & Services' -> 'OAuth consent screen'
- Select User Type 'Internal'
- Provide an App name and email address and click on 'save and continue'
- Click on 'add or remove scope'
- Select 'Gmail API .../auth/gmail.send' and click on 'update' and then 'save and continue'
Add Credentials
- In the Google Console select 'APIs & Services' -> 'Credentials'
- Select 'create credentials' -> 'OAuth client ID'
- Select 'Web application' and provide a name
- For 'Authorized redirect URIs' add 'https://developers.google.com/oauthplayground'
- Click on 'create'
- Take the 'Client ID' and 'Client Secret'
Connect a Gmail account
- Open the Google OAuth 2.0 Playground
- Click on settings and select 'Use your own OAuth credentials'
- Enter your 'Client ID' and 'Client Secret' and click on 'close'
- In Step 1 select 'Gmail API v1' -> '.../gmail.send' and click on 'Authorize APIs'
- Authorize with your Gmail Account you want to send mails from
- In Step 2 click on 'Exchange authorization code for tokens'
- Click on Step 2 and take the 'Refresh Token'
Provider Configuration
| Variable | Type | Description | Required | Default | | --------------------------------- | ------ | ----------------------------------------------------------- | -------- | ------- | | provider | string | The name of this provider 'google' | yes | | | providerOptions | object | Provider options | yes | | | providerOptions.auth.userId | string | The mail address of the Google account to send e-mails from | yes | | | providerOptions.auth.clientId | string | OAuth 2.0 Client ID | yes | | | providerOptions.auth.clientSecret | string | OAuth 2.0 Client Secret | yes | | | providerOptions.auth.refreshToken | string | OAuth 2.0 Refresh Token | yes | | | settings | object | Settings | yes | | | settings.defaultFrom | string | Default sender mail address | no | | | settings.defaultReplyTo | string | The receiver is asked to reply to | no | |
Provider Configuration Example
config/plugins.js
module.exports = ({ env }) => ({
email: {
config: {
provider: 'gmail-api',
providerOptions: {
auth: {
userId: env('EMAIL_OAUTH2_USERID'),
clientId: env('EMAIL_OAUTH2_CLIENTID'),
clientSecret: env('EMAIL_OAUTH2_CLIENTSECRET'),
refreshToken: env('EMAIL_OAUTH2_REFRESHTOKEN'),
},
},
settings: {
defaultFrom: env('EMAIL_FROM'),
defaultReplyTo: env('EMAIL_REPLYTO'),
testAddress: env('EMAIL_TEST_ADDRESS'),
},
},
},
});
.env
EMAIL_FROM=Example Inc. <[email protected]>
EMAIL_REPLYTO=Example Inc. <[email protected]>
[email protected]
[email protected]
EMAIL_OAUTH2_CLIENTID=123....321.apps.googleusercontent.com
EMAIL_OAUTH2_CLIENTSECRET=ABC123...
EMAIL_OAUTH2_REFRESHTOKEN=1//123XYZ...