aboutsummaryrefslogtreecommitdiffstats
path: root/services/mailer/sender/sender.go
blob: e470c2f2b3dfbeb51b3a199ee830cbd12696390b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package sender

import (
	"io"

	"code.gitea.io/gitea/modules/log"
	"code.gitea.io/gitea/modules/setting"
)

type Sender interface {
	Send(from string, to []string, msg io.WriterTo) error
}

var Send = send

func send(sender Sender, msgs ...*Message) error {
	if setting.MailService == nil {
		log.Error("Mailer: Send is being invoked but mail service hasn't been initialized")
		return nil
	}
	for _, msg := range msgs {
		m := msg.ToMessage()
		froms := m.GetFrom()
		to, err := m.GetRecipients()
		if err != nil {
			return err
		}

		// TODO: implement sending from multiple addresses
		if err := sender.Send(froms[0].Address, to, m); err != nil {
			return err
		}
	}
	return nil
}