aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2024-06-29 01:15:19 +0200
committerRobin Jarry <robin@jarry.cc>2024-08-03 20:19:37 +0200
commit954c812d840030f3013ef06621dd537c8b14b23d (patch)
treee1a3a7a0119c246f8969a64691e69c9b7abc0bfe /lib
parentcd92da0e893ab6741bb6d411434edbb03a570c7d (diff)
downloadaerc-954c812d840030f3013ef06621dd537c8b14b23d.tar.gz
reply: allow copying to current folder
Add a new copy-to-replied setting in accounts.conf to copy sent replies to the same folder than their replied message. Requested-by: Tristan Partin <tristan@partin.io> Signed-off-by: Robin Jarry <robin@jarry.cc> Tested-by: Tristan Partin <tristan@partin.io>
Diffstat (limited to 'lib')
-rw-r--r--lib/msgstore.go4
-rw-r--r--lib/send/jmap.go3
-rw-r--r--lib/send/sender.go3
3 files changed, 7 insertions, 3 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go
index d5501a4c..c64f933d 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -18,6 +18,7 @@ import (
// Accesses to fields must be guarded by MessageStore.Lock/Unlock
type MessageStore struct {
sync.Mutex
+ Name string
Deleted map[uint32]interface{}
Messages map[uint32]*models.MessageInfo
Sorting bool
@@ -88,7 +89,7 @@ type MessageStore struct {
const MagicUid = 0xFFFFFFFF
-func NewMessageStore(worker *types.Worker,
+func NewMessageStore(worker *types.Worker, name string,
defaultSortCriteria []*types.SortCriterion,
thread bool, clientThreads bool, clientThreadsDelay time.Duration,
selectLast bool, threadBySubject bool,
@@ -105,6 +106,7 @@ func NewMessageStore(worker *types.Worker,
}
return &MessageStore{
+ Name: name,
Deleted: make(map[uint32]interface{}),
Messages: make(map[uint32]*models.MessageInfo),
diff --git a/lib/send/jmap.go b/lib/send/jmap.go
index 9682629e..5f679b43 100644
--- a/lib/send/jmap.go
+++ b/lib/send/jmap.go
@@ -11,12 +11,13 @@ import (
func newJmapSender(
worker *types.Worker, from *mail.Address, rcpts []*mail.Address,
+ copyTo string,
) (io.WriteCloser, error) {
var writer io.WriteCloser
done := make(chan error)
worker.PostAction(
- &types.StartSendingMessage{From: from, Rcpts: rcpts},
+ &types.StartSendingMessage{From: from, Rcpts: rcpts, CopyTo: copyTo},
func(msg types.WorkerMessage) {
switch msg := msg.(type) {
case *types.Done:
diff --git a/lib/send/sender.go b/lib/send/sender.go
index a1e03da5..87ca4745 100644
--- a/lib/send/sender.go
+++ b/lib/send/sender.go
@@ -16,6 +16,7 @@ import (
func NewSender(
worker *types.Worker, uri *url.URL, domain string,
from *mail.Address, rcpts []*mail.Address,
+ copyTo string,
) (io.WriteCloser, error) {
protocol, auth, err := parseScheme(uri)
if err != nil {
@@ -26,7 +27,7 @@ func NewSender(
case "smtp", "smtp+insecure", "smtps":
return newSmtpSender(protocol, auth, uri, domain, from, rcpts)
case "jmap":
- return newJmapSender(worker, from, rcpts)
+ return newJmapSender(worker, from, rcpts, copyTo)
case "":
return newSendmailSender(uri, rcpts)
default: