/*
-SGBlog -- Git-based CGI blogging engine
-Copyright (C) 2020 Sergey Matveev <stargrave@stargrave.org>
+SGBlog -- Git-backed CGI/UCSPI blogging/phlogging/gemlogging engine
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
"encoding/base64"
"errors"
"io"
- "io/ioutil"
"mime"
"mime/multipart"
"mime/quotedprintable"
err = errors.New("no Subject")
return
}
- words := strings.Fields(subj)
- for i, word := range words {
- if strings.HasPrefix(word, "=?") && strings.HasSuffix(word, "?=") {
- word, err = new(mime.WordDecoder).Decode(word)
- if err != nil {
- return
- }
- words[i] = word
- }
+ subj, err = new(mime.WordDecoder).DecodeHeader(subj)
+ if err != nil {
+ return
}
- subj = strings.Join(words, " ")
-
ct := msg.Header.Get(CT)
if ct == "" {
ct = "text/plain"
err = errors.New("no boundary string")
return
}
- data, err := ioutil.ReadAll(msg.Body)
+ data, err := io.ReadAll(msg.Body)
if err != nil {
return
}