Upgrade to go-message 0.10

Fixes #54
This commit is contained in:
Simon Ser 2019-05-15 18:51:58 +03:00
parent 20ec639f3e
commit 090d9231c6
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
4 changed files with 24 additions and 22 deletions

9
go.mod
View File

@ -6,13 +6,12 @@ require (
github.com/emersion/go-imap v1.0.0-beta.4 github.com/emersion/go-imap v1.0.0-beta.4
github.com/emersion/go-imap-move v0.0.0-20180601155324-5eb20cb834bf github.com/emersion/go-imap-move v0.0.0-20180601155324-5eb20cb834bf
github.com/emersion/go-imap-specialuse v0.0.0-20161227184202-ba031ced6a62 github.com/emersion/go-imap-specialuse v0.0.0-20161227184202-ba031ced6a62
github.com/emersion/go-message v0.9.2 github.com/emersion/go-message v0.10.2
github.com/emersion/go-smtp v0.11.0 github.com/emersion/go-smtp v0.11.0
github.com/emersion/go-vcard v0.0.0-20190105225839-8856043f13c5 github.com/emersion/go-vcard v0.0.0-20190105225839-8856043f13c5
github.com/emersion/go-webdav v0.0.0-20180509190321-4ef680e9a32f github.com/emersion/go-webdav v0.0.0-20180509190321-4ef680e9a32f
github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529 golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f
golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5 // indirect golang.org/x/net v0.0.0-20190514140710-3ec191127204 // indirect
golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862 // indirect golang.org/x/sys v0.0.0-20190515120540-06a5c4944438 // indirect
golang.org/x/text v0.3.2 // indirect
) )

View File

@ -315,9 +315,14 @@ func (mbox *mailbox) SearchMessages(isUID bool, c *imap.SearchCriteria) ([]uint3
h := messageHeader(msg) h := messageHeader(msg)
for key, wantValues := range c.Header { for key, wantValues := range c.Header {
values, ok := h[key] fields := h.FieldsByKey(key)
var values []string
for fields.Next() {
values = append(values, fields.Value())
}
for _, wantValue := range wantValues { for _, wantValue := range wantValues {
if wantValue == "" && !ok { if wantValue == "" && len(values) == 0 {
return nil return nil
} }
if wantValue != "" { if wantValue != "" {

View File

@ -27,10 +27,9 @@ func messageID(msg *protonmail.Message) string {
func formatHeader(h mail.Header) string { func formatHeader(h mail.Header) string {
var b bytes.Buffer var b bytes.Buffer
for k, values := range h.Header { fields := h.Fields()
for _, v := range values { for fields.Next() {
b.WriteString(fmt.Sprintf("%s: %s\r\n", k, v)) b.WriteString(fmt.Sprintf("%s: %s\r\n", fields.Key(), fields.Value()))
}
} }
return b.String() return b.String()
} }
@ -195,7 +194,7 @@ func (mbox *mailbox) attachmentBody(att *protonmail.Attachment) (io.Reader, erro
} }
func inlineHeader(msg *protonmail.Message) message.Header { func inlineHeader(msg *protonmail.Message) message.Header {
h := mail.NewTextHeader() var h mail.InlineHeader
if msg.MIMEType != "" { if msg.MIMEType != "" {
h.SetContentType(msg.MIMEType, nil) h.SetContentType(msg.MIMEType, nil)
} else { } else {
@ -206,7 +205,7 @@ func inlineHeader(msg *protonmail.Message) message.Header {
} }
func attachmentHeader(att *protonmail.Attachment) message.Header { func attachmentHeader(att *protonmail.Attachment) message.Header {
h := mail.NewAttachmentHeader() var h mail.AttachmentHeader
h.SetContentType(att.MIMEType, nil) h.SetContentType(att.MIMEType, nil)
h.Set("Content-Transfer-Encoding", "base64") h.Set("Content-Transfer-Encoding", "base64")
h.SetFilename(att.Name) h.SetFilename(att.Name)
@ -232,7 +231,7 @@ func mailAddressList(addresses []*protonmail.MessageAddress) []*mail.Address {
} }
func messageHeader(msg *protonmail.Message) message.Header { func messageHeader(msg *protonmail.Message) message.Header {
h := mail.NewHeader() var h mail.Header
h.SetContentType("multipart/mixed", nil) h.SetContentType("multipart/mixed", nil)
h.SetDate(time.Unix(msg.Time, 0)) h.SetDate(time.Unix(msg.Time, 0))
h.SetSubject(msg.Subject) h.SetSubject(msg.Subject)
@ -464,7 +463,7 @@ func createMessage(c *protonmail.Client, u *protonmail.User, privateKeys openpgp
} }
switch h := p.Header.(type) { switch h := p.Header.(type) {
case mail.TextHeader: case *mail.InlineHeader:
t, _, err := h.ContentType() t, _, err := h.ContentType()
if err != nil { if err != nil {
break break
@ -479,7 +478,7 @@ func createMessage(c *protonmail.Client, u *protonmail.User, privateKeys openpgp
if _, err := io.Copy(body, p.Body); err != nil { if _, err := io.Copy(body, p.Body); err != nil {
return nil, err return nil, err
} }
case mail.AttachmentHeader: case *mail.AttachmentHeader:
t, _, err := h.ContentType() t, _, err := h.ContentType()
if err != nil { if err != nil {
break break

View File

@ -29,10 +29,9 @@ func toPMAddressList(addresses []*mail.Address) []*protonmail.MessageAddress {
func formatHeader(h mail.Header) string { func formatHeader(h mail.Header) string {
var b bytes.Buffer var b bytes.Buffer
for k, values := range h.Header { fields := h.Fields()
for _, v := range values { for fields.Next() {
b.WriteString(fmt.Sprintf("%s: %s\r\n", k, v)) b.WriteString(fmt.Sprintf("%s: %s\r\n", fields.Key(), fields.Value()))
}
} }
return b.String() return b.String()
} }
@ -168,7 +167,7 @@ func (s *session) Data(r io.Reader) error {
} }
switch h := p.Header.(type) { switch h := p.Header.(type) {
case mail.TextHeader: case *mail.InlineHeader:
t, _, err := h.ContentType() t, _, err := h.ContentType()
if err != nil { if err != nil {
break break
@ -183,7 +182,7 @@ func (s *session) Data(r io.Reader) error {
if _, err := io.Copy(body, p.Body); err != nil { if _, err := io.Copy(body, p.Body); err != nil {
return err return err
} }
case mail.AttachmentHeader: case *mail.AttachmentHeader:
t, _, err := h.ContentType() t, _, err := h.ContentType()
if err != nil { if err != nil {
break break