smtp: add support for In-Reply-To
This commit is contained in:
parent
4de8f28cd6
commit
b8a6d64e5c
|
@ -152,7 +152,7 @@ type MessageFilter struct {
|
||||||
Starred *bool
|
Starred *bool
|
||||||
Unread *bool
|
Unread *bool
|
||||||
Conversation string
|
Conversation string
|
||||||
Address string
|
AddressID string
|
||||||
ID []string
|
ID []string
|
||||||
ExternalID string
|
ExternalID string
|
||||||
}
|
}
|
||||||
|
@ -180,8 +180,8 @@ func (c *Client) ListMessages(filter *MessageFilter) (total int, messages []*Mes
|
||||||
if filter.Conversation != "" {
|
if filter.Conversation != "" {
|
||||||
v.Set("Conversation", filter.Conversation)
|
v.Set("Conversation", filter.Conversation)
|
||||||
}
|
}
|
||||||
if filter.Address != "" {
|
if filter.AddressID != "" {
|
||||||
v.Set("Address", filter.Address)
|
v.Set("AddressID", filter.AddressID)
|
||||||
}
|
}
|
||||||
if filter.ExternalID != "" {
|
if filter.ExternalID != "" {
|
||||||
v.Set("ExternalID", filter.ExternalID)
|
v.Set("ExternalID", filter.ExternalID)
|
||||||
|
|
22
smtp/smtp.go
22
smtp/smtp.go
|
@ -113,8 +113,26 @@ func (u *user) Send(from string, to []string, r io.Reader) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: parentID from In-Reply-To
|
parentID := ""
|
||||||
msg, err = u.c.CreateDraftMessage(msg, "")
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot create draft message: %v", err)
|
return fmt.Errorf("cannot create draft message: %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue