]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - api/mail.go
Mails.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / mail.go
diff --git a/api/mail.go b/api/mail.go
new file mode 100644 (file)
index 0000000..e0f6ccb
--- /dev/null
@@ -0,0 +1,103 @@
+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)
+}