smtp: add support for In-Reply-To

This commit is contained in:
emersion 2018-07-11 11:48:45 +01:00
parent 4de8f28cd6
commit b8a6d64e5c
2 changed files with 23 additions and 5 deletions

View File

@ -152,7 +152,7 @@ type MessageFilter struct {
Starred *bool
Unread *bool
Conversation string
Address string
AddressID string
ID []string
ExternalID string
}
@ -180,8 +180,8 @@ func (c *Client) ListMessages(filter *MessageFilter) (total int, messages []*Mes
if filter.Conversation != "" {
v.Set("Conversation", filter.Conversation)
}
if filter.Address != "" {
v.Set("Address", filter.Address)
if filter.AddressID != "" {
v.Set("AddressID", filter.AddressID)
}
if filter.ExternalID != "" {
v.Set("ExternalID", filter.ExternalID)

View File

@ -113,8 +113,26 @@ func (u *user) Send(from string, to []string, r io.Reader) error {
return err
}
// TODO: parentID from In-Reply-To
msg, err = u.c.CreateDraftMessage(msg, "")
parentID := ""
inReplyToList, _ := mr.Header.AddressList("In-Reply-To")
if len(inReplyToList) == 1 {
inReplyTo := inReplyToList[0].Address
filter := protonmail.MessageFilter{
Limit: 1,
ExternalID: inReplyTo,
AddressID: fromAddr.ID,
}
total, msgs, err := u.c.ListMessages(&filter)
if err != nil {
return err
}
if total == 1 {
parentID = msgs[0].ID
}
}
msg, err = u.c.CreateDraftMessage(msg, parentID)
if err != nil {
return fmt.Errorf("cannot create draft message: %v", err)
}