diff --git a/cmd/process/main.go b/cmd/process/main.go index 0825484..71f81ae 100644 --- a/cmd/process/main.go +++ b/cmd/process/main.go @@ -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 +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) - } - } diff --git a/pkg/mstore/email.go b/pkg/mstore/email.go index 1e7f407..5fd0845 100644 --- a/pkg/mstore/email.go +++ b/pkg/mstore/email.go @@ -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) +}