123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package main
- /* Finds (1st occurrence of) a specific header */
- import (
- "bufio"
- "encoding/json"
- "flag"
- "fmt"
- "net/mail"
- "net/textproto"
- "os"
- )
- func main() {
- reader := bufio.NewReader(os.Stdin)
- m, err := mail.ReadMessage(reader)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
- flag.Parse()
- headers := textproto.MIMEHeader(m.Header)
- if len(flag.Args()) > 0 {
- results := make([]string, 0)
- for _, needle := range flag.Args() {
- values := headers[textproto.CanonicalMIMEHeaderKey(needle)]
- if len(values) == 0 {
- fmt.Fprintf(os.Stderr, "No values for field `%s`\n", needle)
- } else {
- results = append(results, string(values[0]))
- }
- }
- for _, res := range results {
- fmt.Println(res)
- }
- os.Exit(0)
- } else {
- enc, err := json.Marshal(headers)
- if err != nil {
- fmt.Fprintln(os.Stderr, "Error serializing mail headers")
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
- fmt.Println(string(enc))
- os.Exit(0)
- }
- }
|