// SendEmail sends an email through SendGrid func (SendGridEmailer) SendEmail(to string, subject string, msg string) error { from := mail.NewEmail("CountMyReps", "*****@*****.**") // at this point, all recipients _should_ be [email protected] or [email protected] toName := strings.Split(to, ".")[0] if strings.Contains(toName, "@") { toName = strings.Split(toName, "@")[0] } toAddr := mail.NewEmail(toName, to) msg = `<img src="http://countmyreps.com/images/mustache-thin.jpg" style="margin:auto; width:300px; display:block"/>` + msg content := mail.NewContent("text/html", msg) m := mail.NewV3MailInit(from, subject, toAddr, content) request := sendgrid.GetRequest(os.Getenv("SENDGRID_API_KEY"), "/v3/mail/send", "https://api.sendgrid.com") request.Method = "POST" request.Body = mail.GetRequestBody(m) response, err := sendgrid.API(request) if err != nil { return err } if !(response.StatusCode == http.StatusOK || response.StatusCode == http.StatusAccepted) { return fmt.Errorf("unexpected status code from SendGrid: %d - %q", response.StatusCode, response.Body) } return nil }
// Minimum required to send an email func helloEmail() []byte { address := "*****@*****.**" name := "Example User" from := mail.NewEmail(name, address) subject := "Hello World from the SendGrid Go Library" address = "*****@*****.**" name = "Example User" to := mail.NewEmail(name, address) content := mail.NewContent("text/plain", "some text here") m := mail.NewV3MailInit(from, subject, to, content) address = "*****@*****.**" name = "Example User" email := mail.NewEmail(name, address) m.Personalizations[0].AddTos(email) return mail.GetRequestBody(m) }