aboutsummaryrefslogtreecommitdiffstats
path: root/services/mailer
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-08-12 08:26:33 +0100
committerGitHub <noreply@github.com>2021-08-12 10:26:33 +0300
commit162c32af7ec9cc434895079cfc7bfc683feb4d4c (patch)
tree5110a77931917910e4a92b92705a185891a0ff83 /services/mailer
parente29e1637370ad95e4ca9f861c25d366b74829dcc (diff)
downloadgitea-162c32af7ec9cc434895079cfc7bfc683feb4d4c.tar.gz
gitea-162c32af7ec9cc434895079cfc7bfc683feb4d4c.zip
Send registration email on user autoregistration (#16523)
When users login and are autoregistered send email notification. Fix #16178 * Protect public functions within the mailer by testing if the mailer is configured Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'services/mailer')
-rw-r--r--services/mailer/mail.go28
-rw-r--r--services/mailer/mail_comment.go11
-rw-r--r--services/mailer/mail_issue.go6
-rw-r--r--services/mailer/mail_release.go5
-rw-r--r--services/mailer/mail_repo.go6
5 files changed, 56 insertions, 0 deletions
diff --git a/services/mailer/mail.go b/services/mailer/mail.go
index 14512d7d65..979f8aa227 100644
--- a/services/mailer/mail.go
+++ b/services/mailer/mail.go
@@ -57,6 +57,10 @@ func InitMailRender(subjectTpl *texttmpl.Template, bodyTpl *template.Template) {
// SendTestMail sends a test mail
func SendTestMail(email string) error {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
return gomail.Send(Sender, NewMessage([]string{email}, "Gitea Test Email!", "Gitea Test Email!").ToMessage())
}
@@ -90,17 +94,29 @@ func sendUserMail(language string, u *models.User, tpl base.TplName, code, subje
// SendActivateAccountMail sends an activation mail to the user (new user registration)
func SendActivateAccountMail(locale translation.Locale, u *models.User) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
sendUserMail(locale.Language(), u, mailAuthActivate, u.GenerateEmailActivateCode(u.Email), locale.Tr("mail.activate_account"), "activate account")
}
// SendResetPasswordMail sends a password reset mail to the user
func SendResetPasswordMail(u *models.User) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
locale := translation.NewLocale(u.Language)
sendUserMail(u.Language, u, mailAuthResetPassword, u.GenerateEmailActivateCode(u.Email), locale.Tr("mail.reset_password"), "recover account")
}
// SendActivateEmailMail sends confirmation email to confirm new email address
func SendActivateEmailMail(u *models.User, email *models.EmailAddress) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
locale := translation.NewLocale(u.Language)
data := map[string]interface{}{
"DisplayName": u.DisplayName(),
@@ -129,6 +145,10 @@ func SendActivateEmailMail(u *models.User, email *models.EmailAddress) {
// SendRegisterNotifyMail triggers a notify e-mail by admin created a account.
func SendRegisterNotifyMail(u *models.User) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
locale := translation.NewLocale(u.Language)
data := map[string]interface{}{
@@ -156,6 +176,10 @@ func SendRegisterNotifyMail(u *models.User) {
// SendCollaboratorMail sends mail notification to new collaborator.
func SendCollaboratorMail(u, doer *models.User, repo *models.Repository) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
locale := translation.NewLocale(u.Language)
repoName := repo.FullName()
@@ -344,6 +368,10 @@ func sanitizeSubject(subject string) string {
// SendIssueAssignedMail composes and sends issue assigned email
func SendIssueAssignedMail(issue *models.Issue, doer *models.User, content string, comment *models.Comment, recipients []*models.User) error {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
langMap := make(map[string][]*models.User)
for _, user := range recipients {
langMap[user.Language] = append(langMap[user.Language], user)
diff --git a/services/mailer/mail_comment.go b/services/mailer/mail_comment.go
index eca05cef29..eef71557e7 100644
--- a/services/mailer/mail_comment.go
+++ b/services/mailer/mail_comment.go
@@ -7,10 +7,16 @@ package mailer
import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
)
// MailParticipantsComment sends new comment emails to repository watchers and mentioned people.
func MailParticipantsComment(c *models.Comment, opType models.ActionType, issue *models.Issue, mentions []*models.User) error {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
+
content := c.Content
if c.Type == models.CommentTypePullPush {
content = ""
@@ -30,6 +36,11 @@ func MailParticipantsComment(c *models.Comment, opType models.ActionType, issue
// MailMentionsComment sends email to users mentioned in a code comment
func MailMentionsComment(pr *models.PullRequest, c *models.Comment, mentions []*models.User) (err error) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
+
visited := make(map[int64]bool, len(mentions)+1)
visited[c.Poster.ID] = true
if err = mailIssueCommentBatch(
diff --git a/services/mailer/mail_issue.go b/services/mailer/mail_issue.go
index 6ffc08c8c0..6f401e5f92 100644
--- a/services/mailer/mail_issue.go
+++ b/services/mailer/mail_issue.go
@@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
)
func fallbackMailSubject(issue *models.Issue) string {
@@ -163,6 +164,11 @@ func mailIssueCommentBatch(ctx *mailCommentContext, users []*models.User, visite
// MailParticipants sends new issue thread created emails to repository watchers
// and mentioned people.
func MailParticipants(issue *models.Issue, doer *models.User, opType models.ActionType, mentions []*models.User) error {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
+
content := issue.Content
if opType == models.ActionCloseIssue || opType == models.ActionClosePullRequest ||
opType == models.ActionReopenIssue || opType == models.ActionReopenPullRequest ||
diff --git a/services/mailer/mail_release.go b/services/mailer/mail_release.go
index f92d3a78fa..a6fc28a5ca 100644
--- a/services/mailer/mail_release.go
+++ b/services/mailer/mail_release.go
@@ -23,6 +23,11 @@ const (
// MailNewRelease send new release notify to all all repo watchers.
func MailNewRelease(rel *models.Release) {
+ if setting.MailService == nil {
+ // No mail service configured
+ return
+ }
+
watcherIDList, err := models.GetRepoWatchersIDs(rel.RepoID)
if err != nil {
log.Error("GetRepoWatchersIDs(%d): %v", rel.RepoID, err)
diff --git a/services/mailer/mail_repo.go b/services/mailer/mail_repo.go
index 4e629ee5c7..ef85f4aa54 100644
--- a/services/mailer/mail_repo.go
+++ b/services/mailer/mail_repo.go
@@ -9,12 +9,18 @@ import (
"fmt"
"code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/translation"
)
// SendRepoTransferNotifyMail triggers a notification e-mail when a pending repository transfer was created
func SendRepoTransferNotifyMail(doer, newOwner *models.User, repo *models.Repository) error {
+ if setting.MailService == nil {
+ // No mail service configured
+ return nil
+ }
+
if newOwner.IsOrganization() {
users, err := models.GetUsersWhoCanCreateOrgRepo(newOwner.ID)
if err != nil {