use the same sender's domain on thread reply as in parent email

This commit is contained in:
Aine
2022-11-19 17:41:38 +02:00
parent 8aac16aca8
commit 128d2b595a

View File

@@ -156,7 +156,7 @@ func (b *Bot) SendEmailReply(ctx context.Context) {
defer b.unlock(evt.RoomID.String()) defer b.unlock(evt.RoomID.String())
meta := b.getParentEmail(evt, domain) meta := b.getParentEmail(evt, domain)
meta.fixtofrom(mailbox, domain, b.domains) meta.fixtofrom(mailbox, b.domains)
if meta.To == "" { if meta.To == "" {
b.Error(ctx, evt.RoomID, "cannot find parent email and continue the thread. Please, start a new email thread") b.Error(ctx, evt.RoomID, "cannot find parent email and continue the thread. Please, start a new email thread")
@@ -215,19 +215,18 @@ type parentEmail struct {
// that will be sent from postmoogle. // that will be sent from postmoogle.
// To do so, we need to reverse From and To headers, but Cc should be adjusted as well, // To do so, we need to reverse From and To headers, but Cc should be adjusted as well,
// thus that hacky workaround below: // thus that hacky workaround below:
func (e *parentEmail) fixtofrom(newSenderMailbox string, preferredDomain string, domains []string) { func (e *parentEmail) fixtofrom(newSenderMailbox string, domains []string) {
newSenders := make(map[string]struct{}, len(domains)) newSenders := make(map[string]string, len(domains))
newSenderPref := newSenderMailbox + "@" + preferredDomain
for _, domain := range domains { for _, domain := range domains {
sender := newSenderMailbox + "@" + domain sender := newSenderMailbox + "@" + domain
newSenders[sender] = struct{}{} newSenders[sender] = sender
} }
originalFrom := e.From originalFrom := e.From
// reverse From if needed // reverse From if needed
_, ok := newSenders[e.From] newSender, ok := newSenders[e.From]
if !ok { if !ok {
e.From = newSenderPref e.From = newSender
} }
// reverse To if needed // reverse To if needed
_, ok = newSenders[e.To] _, ok = newSenders[e.To]