--- /dev/null
+package api
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/matcornic/hermes"
+ "gopkg.in/gomail.v2"
+)
+
+var MailTemplateEngine hermes.Hermes
+
+func ConfigureMailTemplateEngine() {
+ var link string
+ if strings.Contains(CONFIG.Domain, "localhost") {
+ link = fmt.Sprintf("http://%s", CONFIG.Domain)
+ } else {
+ link = fmt.Sprintf("https://%s", CONFIG.Domain)
+ }
+
+ MailTemplateEngine = hermes.Hermes{
+ Product: hermes.Product{
+ Name: "CryptoPF",
+ Link: link,
+ Copyright: "Copyright © 2017 CryptoPF. All rights reserved.",
+ },
+ }
+}
+
+func SendResetPasswordMail(to, token string) error {
+ mail := hermes.Email{
+ Body: hermes.Body{
+ Name: to,
+ Intros: []string{
+ "You have received this email because a password reset request for your CryptoPF account was received.",
+ },
+ Actions: []hermes.Action{
+ {
+ Instructions: "Click the button below to reset your password:",
+ Button: hermes.Button{
+ Color: "#DC4D2F",
+ Text: "Reset your password",
+ Link: fmt.Sprintf("%s/change-password?token=%s", MailTemplateEngine.Product.Link, token),
+ },
+ },
+ },
+ Outros: []string{
+ "If you did not request a password reset, no further action is required on your part.",
+ },
+ Signature: "Thanks",
+ },
+ }
+
+ body, err := MailTemplateEngine.GenerateHTML(mail)
+ if err != nil {
+ return err
+ }
+
+ return SendEmail(to, "Password reset", body)
+}
+
+func SendConfirmationMail(to, token string) error {
+ mail := hermes.Email{
+ Body: hermes.Body{
+ Name: to,
+ Intros: []string{
+ "Welcome to CryptoPF! We're very excited to have you on board.",
+ },
+ Actions: []hermes.Action{
+ {
+ Instructions: "To get started with CryptoPF, please click here:",
+ Button: hermes.Button{
+ Text: "Confirm your account",
+ Link: fmt.Sprintf("%s/confirm?token=%s", MailTemplateEngine.Product.Link, token),
+ },
+ },
+ },
+ Outros: []string{
+ "Need help, or have questions? Just reply to this email, we'd love to help.",
+ },
+ Signature: "Thanks",
+ },
+ }
+
+ body, err := MailTemplateEngine.GenerateHTML(mail)
+ if err != nil {
+ return err
+ }
+
+ return SendEmail(to, "Confirm your email", body)
+}
+
+func SendEmail(to, subject, body string) error {
+ m := gomail.NewMessage()
+ m.SetAddressHeader("From", MAIL_CONFIG.AddressFrom, "CryptoPF")
+ m.SetAddressHeader("To", to, to)
+ m.SetHeader("Subject", subject)
+ m.SetBody("text/html", body)
+
+ d := gomail.NewPlainDialer(MAIL_CONFIG.SmtpAddress, 587, MAIL_CONFIG.Login, MAIL_CONFIG.Password)
+
+ return d.DialAndSend(m)
+}