mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.7 KiB
80 lines
1.7 KiB
package main |
|
|
|
import ( |
|
"flag" |
|
"fmt" |
|
"os" |
|
"strings" |
|
|
|
"github.com/coreos/dex/email" |
|
"github.com/coreos/dex/pkg/log" |
|
) |
|
|
|
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 |
|
} |
|
|
|
var ( |
|
tpls = map[string]map[string]interface{}{ |
|
"verify-email": map[string]interface{}{ |
|
"email": "test@example.com", |
|
"link": "http://text.example.com", |
|
}, |
|
} |
|
) |
|
|
|
func stderr(format string, args ...interface{}) { |
|
if !strings.HasSuffix(format, "\n") { |
|
format = format + "\n" |
|
} |
|
fmt.Fprintf(os.Stderr, format, args...) |
|
} |
|
|
|
func die(format string, args ...interface{}) { |
|
stderr(format, args...) |
|
os.Exit(1) |
|
} |
|
|
|
func main() { |
|
log.EnableDebug() |
|
|
|
emailTemplates := flag.String("templates-dir", "./static/email", "directory of email template files") |
|
emailFrom := flag.String("from", "no-reply@example.com", "") |
|
emailTo := flag.String("to", "", "") |
|
emailConfig := flag.String("cfg", "./static/fixtures/emailer.json", "configures emailer.") |
|
tplName := flag.String("template", "verify-email", "which email template to use.") |
|
flag.Parse() |
|
emailer, err := getEmailer(*emailConfig, *emailTemplates) |
|
if err != nil { |
|
die("Error getting emailer: %v", err) |
|
} |
|
|
|
data, ok := tpls[*tplName] |
|
if !ok { |
|
die("no such template.") |
|
} |
|
|
|
if *emailTo == "" { |
|
die("--email-to is required") |
|
} |
|
err = emailer.SendMail(*emailFrom, "TEST EMAIL", *tplName, data, *emailTo) |
|
if err != nil { |
|
die("err: %v", err) |
|
} |
|
|
|
}
|
|
|