smtp: set ExternalID when creating draft

Re-use the client's Message-Id header when creating a new draft.
This allows In-Reply-To to work as expected in subsequent messages.

Closes: https://github.com/emersion/hydroxide/issues/186
This commit is contained in:
Simon Ser 2021-07-30 15:22:50 +02:00
parent c6c1d6ca19
commit b122ca8a1f
1 changed files with 12 additions and 6 deletions

View File

@ -135,13 +135,19 @@ func (s *session) Data(r io.Reader) error {
return errors.New("sender address key hasn't been decrypted") return errors.New("sender address key hasn't been decrypted")
} }
msgID, err := mr.Header.MessageID()
if err != nil {
return fmt.Errorf("failed to parse Message-Id: %v", err)
}
msg := &protonmail.Message{ msg := &protonmail.Message{
ToList: toPMAddressList(toList), ToList: toPMAddressList(toList),
CCList: toPMAddressList(ccList), CCList: toPMAddressList(ccList),
BCCList: toPMAddressList(bccList), BCCList: toPMAddressList(bccList),
Subject: subject, Subject: subject,
Header: formatHeader(mr.Header), Header: formatHeader(mr.Header),
AddressID: fromAddr.ID, AddressID: fromAddr.ID,
ExternalID: msgID,
Sender: &protonmail.MessageAddress{ Sender: &protonmail.MessageAddress{
Address: rawFrom.Address, Address: rawFrom.Address,
Name: rawFrom.Name, Name: rawFrom.Name,