https://github.com/accelbyte/justice-go-common-email
https://github.com/accelbyte/justice-go-common-email
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/accelbyte/justice-go-common-email
- Owner: AccelByte
- License: apache-2.0
- Created: 2023-06-14T08:53:49.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-20T04:26:52.000Z (almost 2 years ago)
- Last Synced: 2025-07-19T08:48:51.212Z (12 months ago)
- Language: Go
- Size: 27.3 KB
- Stars: 0
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# justice-go-common-email
Go SDK for email sender functionality in AccelByte services.
## Usage
### Install
```
go get -u github.com/AccelByte/justice-go-common-email
```
### Importing
```go
"github.com/AccelByte/justice-go-common-email"
```
To create a new email sender client, use this function:
```go
// If using static configuration
emailSender, errEmailSender := emailsender.NewEmailSender(emailsender.StaticSource)
// If using config service configuration
emailSender, errEmailSender := emailsender.NewEmailSender(emailsender.ConfigServiceSource)
```
Example initialize email sender client by environment variable:
```go
var emailConfigSource emailsender.EmailConfigSource
if str := os.Getenv("APP_EMAIL_CONFIG_SOURCE"); str != "" { // using environment variable to decide the source config
if str == string(emailsender.StaticSource) {
emailConfigSource = emailsender.StaticSource
} else if str == string(emailsender.ConfigServiceSource) {
emailConfigSource = emailsender.ConfigServiceSource
}
}
if emailConfigSource == nil {
return errors.New("Source config is not valid")
}
emailSender, errEmailSender := emailsender.NewEmailSender(emailConfigSource)
if errEmailSender != nil {
return errEmailSender
}
```
## Supported Email Sender Configuration
### Static Configuration
Read email sender configuration from environment variables.
Example initialization:
```go
emailSender, errEmailSender := emailsender.NewEmailSender(emailsender.StaticSource)
```
#### Environment Variables
| Environment Variable | Description |
|-----------------------|---------------------------------------------------------|
| APP_EMAIL_SENDER_NAME | Email sender platform. options: `sendgrid`, `mandrill`. |
| FROM_EMAIL_ADDRESS | From email address, required. |
| FROM_EMAIL_NAME | From email name. |
##### If using `sendgrid` platform:
| Environment Variable | Description |
|---------------------------|-----------------------------|
| SENDGRID_API_KEY | Sendgrid API Key, required. |
| SENDGRID_EMAIL_CATEGORIES | Sendgrid email categories. |
##### If using `mandrill` platform:
There are 2 mode available when using `mandrill` platform: API and SMTP.
You could decide which mode you want to activate by configuring the environment variables below, then it will automatically use the configured one:
| Environment Variable | Description | Mode |
|---------------------------|------------------------------------------------------|--------|
| MANDRILL_API_URL | Mandrill API URL (default: https://mandrillapp.com). | API |
| MANDRILL_API_KEY | Mandrill API Key. | API |
| MANDRILL_SMTP_HOST | Mandrill SMTP Host (default: smtp.mandrillapp.com). | SMTP |
| MANDRILL_SMTP_PORT | Mandrill SMTP Port (default: 587). | SMTP |
| MANDRILL_USERNAME | Mandrill username. | SMTP |
| MANDRILL_PASSWORD | Mandrill password. | SMTP |
### Config Service Configuration
Read email sender configuration from AccelByte Config Service.
Example initialization:
```go
emailSender, errEmailSender := emailsender.NewEmailSender(emailsender.ConfigServiceSource)
```
#### Environment Variables
| Environment Variable | Description |
|---------------------------------|-------------------------------------------------------------------------------------------------------------|
| APP_CONFIG_SERVICE_REMOTE_HOST | Config Service host to fetch the email sender configuration (default: http://justice-config-service/config) |
| APP_CONFIG_SERVICE_CACHE_EXPIRE | Config Service cache expire in second (default: 60) |
| APP_EMAIL_SENDER_CACHE_EXPIRE | Email sender platform cache expire in second (default: 60) |
## License
Copyright © 2023, AccelByte Inc. Released under the Apache License, Version 2.0