support for SendGrid payments/balance emails
This commit is contained in:
parent
24082c831f
commit
77f1de8b7e
5 changed files with 95 additions and 61 deletions
|
|
@ -32,3 +32,5 @@ Here are the descriptions of values available to use in the `settings` table:
|
||||||
| FUNCTION_LNDHUB | DISABLE | system level switch for using LNDHUB in place of LND |
|
| FUNCTION_LNDHUB | DISABLE | system level switch for using LNDHUB in place of LND |
|
||||||
| LNDHUB_URL | | URL for the LNDHUB service |
|
| LNDHUB_URL | | URL for the LNDHUB service |
|
||||||
| FUNCTION_INTERNAL_API | DISABLE | system level switch for activating the internal API |
|
| FUNCTION_INTERNAL_API | DISABLE | system level switch for activating the internal API |
|
||||||
|
| SENDGRID_API_KEY | | User API Key from SendGrid.com |
|
||||||
|
| SENDGRID_EMAIL_SENDER | | Single Sender email address verified by SendGrid |
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,18 @@
|
||||||
package email
|
package email
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
"github.com/aws/aws-sdk-go/service/ses"
|
"github.com/aws/aws-sdk-go/service/ses"
|
||||||
"github.com/boltcard/boltcard/db"
|
"github.com/boltcard/boltcard/db"
|
||||||
|
"github.com/sendgrid/sendgrid-go"
|
||||||
|
"github.com/sendgrid/sendgrid-go/helpers/mail"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Send_balance_email(recipient_email string, card_id int) {
|
func Send_balance_email(recipient_email string, card_id int) {
|
||||||
|
|
@ -86,9 +89,29 @@ func Send_balance_email(recipient_email string, card_id int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/ses-example-send-email.html
|
// https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/ses-example-send-email.html
|
||||||
|
// https://github.com/sendgrid/sendgrid-go
|
||||||
|
|
||||||
func Send_email(recipient string, subject string, htmlBody string, textBody string) {
|
func Send_email(recipient string, subject string, htmlBody string, textBody string) {
|
||||||
|
|
||||||
|
send_grid_api_key := db.Get_setting("SENDGRID_API_KEY")
|
||||||
|
send_grid_email_sender := db.Get_setting("SENDGRID_EMAIL_SENDER")
|
||||||
|
if send_grid_api_key != "" && send_grid_email_sender != "" {
|
||||||
|
from := mail.NewEmail("", send_grid_email_sender)
|
||||||
|
subject := subject
|
||||||
|
to := mail.NewEmail("", recipient)
|
||||||
|
plainTextContent := textBody
|
||||||
|
htmlContent := htmlBody
|
||||||
|
message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)
|
||||||
|
client := sendgrid.NewSendClient(send_grid_api_key)
|
||||||
|
response, err := client.Send(message)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err.Error())
|
||||||
|
} else {
|
||||||
|
log.WithFields(log.Fields{"result": response}).Info("email sent")
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
aws_ses_id := db.Get_setting("AWS_SES_ID")
|
aws_ses_id := db.Get_setting("AWS_SES_ID")
|
||||||
aws_ses_secret := db.Get_setting("AWS_SES_SECRET")
|
aws_ses_secret := db.Get_setting("AWS_SES_SECRET")
|
||||||
sender := db.Get_setting("AWS_SES_EMAIL_FROM")
|
sender := db.Get_setting("AWS_SES_EMAIL_FROM")
|
||||||
|
|
@ -152,4 +175,5 @@ func Send_email(recipient string, subject string, htmlBody string, textBody stri
|
||||||
}
|
}
|
||||||
|
|
||||||
log.WithFields(log.Fields{"result": result}).Info("email sent")
|
log.WithFields(log.Fields{"result": result}).Info("email sent")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -97,6 +97,8 @@ require (
|
||||||
github.com/prometheus/common v0.37.0 // indirect
|
github.com/prometheus/common v0.37.0 // indirect
|
||||||
github.com/prometheus/procfs v0.8.0 // indirect
|
github.com/prometheus/procfs v0.8.0 // indirect
|
||||||
github.com/rogpeppe/fastuuid v1.2.0 // indirect
|
github.com/rogpeppe/fastuuid v1.2.0 // indirect
|
||||||
|
github.com/sendgrid/rest v2.6.9+incompatible // indirect
|
||||||
|
github.com/sendgrid/sendgrid-go v3.12.0+incompatible // indirect
|
||||||
github.com/soheilhy/cmux v0.1.5 // indirect
|
github.com/soheilhy/cmux v0.1.5 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
github.com/stretchr/objx v0.5.0 // indirect
|
github.com/stretchr/objx v0.5.0 // indirect
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -607,6 +607,10 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
|
||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
|
github.com/sendgrid/rest v2.6.9+incompatible h1:1EyIcsNdn9KIisLW50MKwmSRSK+ekueiEMJ7NEoxJo0=
|
||||||
|
github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE=
|
||||||
|
github.com/sendgrid/sendgrid-go v3.12.0+incompatible h1:/N2vx18Fg1KmQOh6zESc5FJB8pYwt5QFBDflYPh1KVg=
|
||||||
|
github.com/sendgrid/sendgrid-go v3.12.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8=
|
||||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||||
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
||||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
|
|
|
||||||
|
|
@ -29,3 +29,5 @@ INSERT INTO settings (name, value) VALUES ('EMAIL_MAX_TXS', '');
|
||||||
INSERT INTO settings (name, value) VALUES ('FUNCTION_LNDHUB', '');
|
INSERT INTO settings (name, value) VALUES ('FUNCTION_LNDHUB', '');
|
||||||
INSERT INTO settings (name, value) VALUES ('LNDHUB_URL', '');
|
INSERT INTO settings (name, value) VALUES ('LNDHUB_URL', '');
|
||||||
INSERT INTO settings (name, value) VALUES ('FUNCTION_INTERNAL_API', '');
|
INSERT INTO settings (name, value) VALUES ('FUNCTION_INTERNAL_API', '');
|
||||||
|
INSERT INTO settings (name, value) VALUES ('SENDGRID_API_KEY', '');
|
||||||
|
INSERT INTO settings (name, value) VALUES ('SENDGRID_EMAIL_SENDER', '');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue