use the same sender's domain on thread reply as in parent email
This commit is contained in:
13
bot/email.go
13
bot/email.go
@@ -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]
|
||||||
|
|||||||
Reference in New Issue
Block a user