working imap append

This commit is contained in:
Erik Winter 2021-01-27 15:01:42 +01:00
parent 08a149acec
commit 13ef0f903d
2 changed files with 44 additions and 6 deletions

View File

@ -2,12 +2,35 @@ package main
import (
"fmt"
"io"
"log"
"os"
"strings"
"git.sr.ht/~ewintr/gte/pkg/mstore"
"github.com/emersion/go-imap"
)
type Body struct {
reader io.Reader
length int
}
func NewBody(msg string) *Body {
return &Body{
reader: strings.NewReader(msg),
length: len([]byte(msg)),
}
}
func (b *Body) Read(p []byte) (int, error) {
return b.reader.Read(p)
}
func (b *Body) Len() int {
return b.length
}
func main() {
config := &mstore.EMailStoreConfiguration{
IMAPURL: os.Getenv("IMAP_URL"),
@ -34,12 +57,22 @@ func main() {
fmt.Println(f.Name)
}
messages, err := mailStore.Inbox()
if err != nil {
/*
messages, err := mailStore.Inbox()
if err != nil {
log.Fatal(err)
}
for _, m := range messages {
fmt.Println(m.Subject)
}
*/
body := NewBody(`From: todo <process@erikwinter.nl>
Subject: the subject
And here comes the body`)
if err := mailStore.Append("INBOX", imap.Literal(body)); err != nil {
log.Fatal(err)
}
for _, m := range messages {
fmt.Println(m.Subject)
}
}

View File

@ -2,6 +2,7 @@ package mstore
import (
"fmt"
"time"
"github.com/emersion/go-imap"
"github.com/emersion/go-imap/client"
@ -101,3 +102,7 @@ func (es *EMailStore) Inbox() ([]*Message, error) {
return messages, nil
}
func (es *EMailStore) Append(mbox string, msg imap.Literal) error {
return es.imap.Append(mbox, nil, time.Time{}, msg)
}