0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00
logto/packages/connector-smtp/README.md

5.4 KiB

SMTP connector

The SMTP (Simple Mail Transfer Protocol) is an internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive messages.

Set up SMTP connector

SMTP is a transmission protocol that is not exclusive to some specific email service providers but can work with all providers.

We are now offering guides on how to use the SMTP connector to send emails following providers for your better understanding:

  • Gmail is the most popular email service vendor worldwide.
  • Aliyun direct mail and SendGrid mail. Some of you might be familiar with these two email service providers because Logto Team provided corresponding connectors; you will likely have a general idea of them.

We hope you can figure out all other email vendors' setups with the following examples 🚀

Set up for Gmail use

You can get a new Gmail account at Gmail, or you can use an existing account if you have one.

A Gmail official post shows how to determine required properties' values to operate Gmail via an SMTP connector.

By following the post, your connector JSON should be like this:

{
    "host": "smtp.gmail.com",
    "port": <port-number>,
    "username": "<your-gmail-address>",
    "password": "<password-to-previous-gmail-address>",
    "fromEmail": "<your-gmail-address>",
    "templates": [
        {
            "subject": "<register-template-subject>",
            "content": "<Logto: Your passcode is {{code}}. (regitser template)>",
            "usageType": "Register",
            "contentType": "text/plain"
        }
    ]
}

Integrate with SendGrid SMTP API

Initially, we assume that you already have a SendGrid account. If not, create a new account at the SendGrid website.

You can find a step-by-step guide on Integrating with the SMTP API.

Developers can access Verified senders' details on the Sender Management page.

After going through the guide, your connector JSON should look like this:

{
    "host": "smtp.sendgrid.net",
    "port": 587,
    "username": "apiKey",
    "password": "<api-key-with-at-least-mail-permission>",
    "fromEmail": "<email-address-of-a-verified-sender>",
    "templates": [
        {
            "subject": "<register-template-subject>",
            "content": "<Logto: Your passcode is {{code}}. (regitser template)>",
            "usageType": "Register",
            "contentType": "text/plain"
        }
    ]
}

Configure with Aliyun direct mail account

Sign in to the Aliyun website. Register a new account if you don't have one.

Follow the Send emails using SMTP guide and finish those 'tasks' to get those required settings and information.

You can go to SMTP service address page to choose a proper SMTP service address host and port number.

To check Sender Addresses, you can find the entrance on the left-side navigation pane on DirectMail console. You should see Sender address and SMTP Password here.

After going through the guide, your connector JSON should look like this:

{
    "host": "<SMTP-service-address>",
    "port": <port-number>,
    "username": "<email-address-of-chosen-sender-address>",
    "password": "<api-key-with-at-least-mail-permission>",
    "fromEmail": "<email-address-of-a-verified-sender-should-be-the-same-as-`username`>",
    "templates": [
        {
            "subject": "<register-template-subject>",
            "content": "<Logto: Your passcode is {{code}}. (regitser template)>",
            "usageType": "Register",
            "contentType": "text/plain"
        }
    ]
}

Note

Only one sample template is provided in the previous cases to keep things simple. You should add more templates for other use cases. You should change values wrapped with "<" and ">" according to your SendGrid or Aliyun account settings and choose to keep other fields w/o "<" and ">".

Config types

Name Type
host string
port string
username string
password string
fromEmail string
templates Template[]
Template Properties Type Enum values
subject string N/A
content string N/A
usageType enum string 'Register' | 'SignIn' | 'Test'
contentType enum string 'text/plain' | 'text/html'

References