2024-11-29 17:15:41 -08:00
|
|
|
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
|
|
|
|
|
package sender
|
|
|
|
|
|
|
|
|
|
import (
|
2025-12-13 02:56:05 +08:00
|
|
|
"errors"
|
2024-12-04 14:33:43 -08:00
|
|
|
"io"
|
2024-11-29 17:15:41 -08:00
|
|
|
)
|
|
|
|
|
|
2024-12-04 14:33:43 -08:00
|
|
|
type Sender interface {
|
|
|
|
|
Send(from string, to []string, msg io.WriterTo) error
|
|
|
|
|
}
|
2024-11-29 17:15:41 -08:00
|
|
|
|
|
|
|
|
var Send = send
|
|
|
|
|
|
2025-12-13 02:56:05 +08:00
|
|
|
func send(sender Sender, msg *Message) error {
|
|
|
|
|
m := msg.ToMessage()
|
|
|
|
|
froms := m.GetFrom()
|
|
|
|
|
to, err := m.GetRecipients()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
2024-11-29 17:15:41 -08:00
|
|
|
}
|
2024-12-04 14:33:43 -08:00
|
|
|
|
2025-12-13 02:56:05 +08:00
|
|
|
// TODO: implement sending from multiple addresses
|
|
|
|
|
if len(froms) == 0 {
|
|
|
|
|
// FIXME: no idea why sometimes the "froms" can be empty, need to figure out the root problem
|
|
|
|
|
return errors.New("no FROM specified")
|
2024-11-29 17:15:41 -08:00
|
|
|
}
|
2025-12-13 02:56:05 +08:00
|
|
|
return sender.Send(froms[0].Address, to, m)
|
2024-11-29 17:15:41 -08:00
|
|
|
}
|