Skip to content

Commit

Permalink
Fix send mail (#13312)
Browse files Browse the repository at this point in the history
* Fix send mail

* Fix send mail

* Update modules/private/mail.go

Co-authored-by: techknowlogick <matti@mdranta.net>
  • Loading branch information
lunny and techknowlogick committed Oct 26, 2020
1 parent dbebc6b commit 38d11ee
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 6 deletions.
7 changes: 5 additions & 2 deletions cmd/mailer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ import (
"net/http"

"code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/setting"
"github.com/urfave/cli"
)

func runSendMail(c *cli.Context) error {
setting.NewContext()

if err := argsSet(c, "title"); err != nil {
return err
}
Expand All @@ -38,11 +41,11 @@ func runSendMail(c *cli.Context) error {

status, message := private.SendEmail(subject, body, nil)
if status != http.StatusOK {
fmt.Printf("error: %s", message)
fmt.Printf("error: %s\n", message)
return nil
}

fmt.Printf("Succseded: %s", message)
fmt.Printf("Success: %s\n", message)

return nil
}
7 changes: 6 additions & 1 deletion modules/private/mail.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,10 @@ func SendEmail(subject, message string, to []string) (int, string) {
return http.StatusInternalServerError, fmt.Sprintf("Response body error: %v", err.Error())
}

return http.StatusOK, fmt.Sprintf("Was sent %s from %d", body, len(to))
var users = fmt.Sprintf("%d", len(to))
if len(to) == 0 {
users = "all"
}

return http.StatusOK, fmt.Sprintf("Sent %s email(s) to %s users", body, users)
}
28 changes: 25 additions & 3 deletions routers/private/mail.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,41 @@
package private

import (
"encoding/json"
"fmt"
"net/http"
"strconv"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/services/mailer"
"gitea.com/macaron/macaron"
)

// SendEmail pushes messages to mail queue
//
// It doesn't wait before each message will be processed
func SendEmail(ctx *macaron.Context, mail private.Email) {
func SendEmail(ctx *macaron.Context) {
if setting.MailService == nil {
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
"err": "Mail service is not enabled.",
})
return
}

var mail private.Email
rd := ctx.Req.Body().ReadCloser()
defer rd.Close()
if err := json.NewDecoder(rd).Decode(&mail); err != nil {
log.Error("%v", err)
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
"err": err,
})
return
}

var emails []string
if len(mail.To) > 0 {
for _, uname := range mail.To {
Expand All @@ -33,13 +53,15 @@ func SendEmail(ctx *macaron.Context, mail private.Email) {
return
}

if user != nil {
if user != nil && len(user.Email) > 0 {
emails = append(emails, user.Email)
}
}
} else {
err := models.IterateUser(func(user *models.User) error {
emails = append(emails, user.Email)
if len(user.Email) > 0 {
emails = append(emails, user.Email)
}
return nil
})
if err != nil {
Expand Down

0 comments on commit 38d11ee

Please sign in to comment.