func getEmailer(emailerConfigFile, emailTemplateDir string) (*email.TemplatizedEmailer, error) { cfg, err := email.NewEmailerConfigFromFile(emailerConfigFile) if err != nil { return nil, err } emailer, err := cfg.Emailer() if err != nil { return nil, err } tMailer, err := email.NewTemplatizedEmailerFromGlobs(emailTemplateDir+"/*.txt", emailTemplateDir+"/*.html", emailer) if err != nil { return nil, err } return tMailer, nil }
func setEmailer(srv *Server, issuerName, fromAddress, emailerConfigFile string, emailTemplateDirs []string) error { cfg, err := email.NewEmailerConfigFromFile(emailerConfigFile) if err != nil { return err } emailer, err := cfg.Emailer() if err != nil { return err } getFileNames := func(dir, ext string) ([]string, error) { fns, err := filepath.Glob(dir + "/*." + ext) if err != nil { return nil, err } return fns, nil } getTextFiles := func(dir string) ([]string, error) { return getFileNames(dir, "txt") } getHTMLFiles := func(dir string) ([]string, error) { return getFileNames(dir, "html") } textTemplates := texttemplate.New("textTemplates") htmlTemplates := template.New("htmlTemplates") for _, dir := range emailTemplateDirs { textFileNames, err := getTextFiles(dir) if err != nil { return err } if len(textFileNames) != 0 { textTemplates, err = textTemplates.ParseFiles(textFileNames...) } if err != nil { return err } htmlFileNames, err := getHTMLFiles(dir) if err != nil { return err } if len(htmlFileNames) != 0 { htmlTemplates, err = htmlTemplates.ParseFiles(htmlFileNames...) } if err != nil { return err } } tMailer := email.NewTemplatizedEmailerFromTemplates(textTemplates, htmlTemplates, emailer) tMailer.SetGlobalContext(map[string]interface{}{ "issuer_name": issuerName, }) ue := useremail.NewUserEmailer(srv.UserRepo, srv.PasswordInfoRepo, srv.KeyManager.Signer, srv.SessionManager.ValidityWindow, srv.IssuerURL, tMailer, fromAddress, srv.absURL(httpPathResetPassword), srv.absURL(httpPathEmailVerify), srv.absURL(httpPathAcceptInvitation), ) srv.UserEmailer = ue return nil }