mirror of https://github.com/cloudreve/Cloudreve
feat(email): support magic variables in email title
parent
cb81e29a7b
commit
edaaa55e59
|
@ -674,7 +674,7 @@ func init() {
|
||||||
for _, langContents := range mailTemplateContents {
|
for _, langContents := range mailTemplateContents {
|
||||||
activeMails = append(activeMails, map[string]string{
|
activeMails = append(activeMails, map[string]string{
|
||||||
"language": langContents.Language,
|
"language": langContents.Language,
|
||||||
"title": langContents.ActiveTitle,
|
"title": "[{{ .CommonContext.SiteBasic.Name }}] " + langContents.ActiveTitle,
|
||||||
"body": util.Replace(map[string]string{
|
"body": util.Replace(map[string]string{
|
||||||
"[[ .Language ]]": langContents.Language,
|
"[[ .Language ]]": langContents.Language,
|
||||||
"[[ .ActiveTitle ]]": langContents.ActiveTitle,
|
"[[ .ActiveTitle ]]": langContents.ActiveTitle,
|
||||||
|
@ -694,7 +694,7 @@ func init() {
|
||||||
for _, langContents := range mailTemplateContents {
|
for _, langContents := range mailTemplateContents {
|
||||||
resetMails = append(resetMails, map[string]string{
|
resetMails = append(resetMails, map[string]string{
|
||||||
"language": langContents.Language,
|
"language": langContents.Language,
|
||||||
"title": langContents.ResetTitle,
|
"title": "[{{ .CommonContext.SiteBasic.Name }}] " + langContents.ResetTitle,
|
||||||
"body": util.Replace(map[string]string{
|
"body": util.Replace(map[string]string{
|
||||||
"[[ .Language ]]": langContents.Language,
|
"[[ .Language ]]": langContents.Language,
|
||||||
"[[ .ResetTitle ]]": langContents.ResetTitle,
|
"[[ .ResetTitle ]]": langContents.ResetTitle,
|
||||||
|
|
|
@ -38,18 +38,29 @@ func NewResetEmail(ctx context.Context, settings setting.Provider, user *ent.Use
|
||||||
Url: url,
|
Url: url,
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl, err := template.New("reset").Parse(selected.Body)
|
tmplTitle, err := template.New("resetTitle").Parse(selected.Title)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", fmt.Errorf("failed to parse email title: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var resTitle strings.Builder
|
||||||
|
err = tmplTitle.Execute(&resTitle, resetCtx)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", fmt.Errorf("failed to execute email title: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tmplBody, err := template.New("resetBody").Parse(selected.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to parse email template: %w", err)
|
return "", "", fmt.Errorf("failed to parse email template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var res strings.Builder
|
var resBody strings.Builder
|
||||||
err = tmpl.Execute(&res, resetCtx)
|
err = tmplBody.Execute(&resBody, resetCtx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("[%s] %s", resetCtx.SiteBasic.Name, selected.Title), res.String(), nil
|
return resTitle.String(), resBody.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ActivationContext used for variables in activation email
|
// ActivationContext used for variables in activation email
|
||||||
|
@ -73,18 +84,29 @@ func NewActivationEmail(ctx context.Context, settings setting.Provider, user *en
|
||||||
Url: url,
|
Url: url,
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl, err := template.New("activation").Parse(selected.Body)
|
tmplTitle, err := template.New("activationTitle").Parse(selected.Title)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", fmt.Errorf("failed to parse email title: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var resTitle strings.Builder
|
||||||
|
err = tmplTitle.Execute(&resTitle, activationCtx)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", fmt.Errorf("failed to execute email title: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tmplBody, err := template.New("activationBody").Parse(selected.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to parse email template: %w", err)
|
return "", "", fmt.Errorf("failed to parse email template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var res strings.Builder
|
var resBody strings.Builder
|
||||||
err = tmpl.Execute(&res, activationCtx)
|
err = tmplBody.Execute(&resBody, activationCtx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("[%s] %s", activationCtx.SiteBasic.Name, selected.Title), res.String(), nil
|
return resTitle.String(), resBody.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func commonContext(ctx context.Context, settings setting.Provider) *CommonContext {
|
func commonContext(ctx context.Context, settings setting.Provider) *CommonContext {
|
||||||
|
|
Loading…
Reference in New Issue