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.

mail_team_invite.go 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package mailer
  4. import (
  5. "bytes"
  6. "context"
  7. org_model "code.gitea.io/gitea/models/organization"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "code.gitea.io/gitea/modules/base"
  10. "code.gitea.io/gitea/modules/log"
  11. "code.gitea.io/gitea/modules/setting"
  12. "code.gitea.io/gitea/modules/templates"
  13. "code.gitea.io/gitea/modules/translation"
  14. )
  15. const (
  16. tplTeamInviteMail base.TplName = "team_invite"
  17. )
  18. // MailTeamInvite sends team invites
  19. func MailTeamInvite(ctx context.Context, inviter *user_model.User, team *org_model.Team, invite *org_model.TeamInvite) error {
  20. if setting.MailService == nil {
  21. return nil
  22. }
  23. org, err := user_model.GetUserByID(ctx, team.OrgID)
  24. if err != nil {
  25. return err
  26. }
  27. locale := translation.NewLocale(inviter.Language)
  28. subject := locale.Tr("mail.team_invite.subject", inviter.DisplayName(), org.DisplayName())
  29. mailMeta := map[string]any{
  30. "Inviter": inviter,
  31. "Organization": org,
  32. "Team": team,
  33. "Invite": invite,
  34. "Subject": subject,
  35. // helper
  36. "locale": locale,
  37. "Str2html": templates.Str2html,
  38. "DotEscape": templates.DotEscape,
  39. }
  40. var mailBody bytes.Buffer
  41. if err := bodyTemplates.ExecuteTemplate(&mailBody, string(tplTeamInviteMail), mailMeta); err != nil {
  42. log.Error("ExecuteTemplate [%s]: %v", string(tplTeamInviteMail)+"/body", err)
  43. return err
  44. }
  45. msg := NewMessage(invite.Email, subject, mailBody.String())
  46. msg.Info = subject
  47. SendAsync(msg)
  48. return nil
  49. }