package textproto
import "github.com/emersion/go-message/textproto"
Index ¶
- func WriteHeader(w io.Writer, h Header) error
- type Header
- func ReadHeader(r *bufio.Reader) (Header, error)
- func (h *Header) Add(k, v string)
- func (h *Header) Copy() Header
- func (h *Header) Del(k string)
- func (h *Header) Fields() HeaderFields
- func (h *Header) FieldsByKey(k string) HeaderFields
- func (h *Header) Get(k string) string
- func (h *Header) Has(k string) bool
- func (h *Header) Len() int
- func (h *Header) Set(k, v string)
- type HeaderFields
- type MultipartReader
- func NewMultipartReader(r io.Reader, boundary string) *MultipartReader
- func (r *MultipartReader) NextPart() (*Part, error)
- type MultipartWriter
- func NewMultipartWriter(w io.Writer) *MultipartWriter
- func (w *MultipartWriter) Boundary() string
- func (w *MultipartWriter) Close() error
- func (w *MultipartWriter) CreatePart(header Header) (io.Writer, error)
- func (w *MultipartWriter) SetBoundary(boundary string) error
- type Part
Examples ¶
Functions ¶
func WriteHeader ¶
WriteHeader writes a MIME header to w.
Types ¶
type Header ¶
type Header struct {
// contains filtered or unexported fields
}
A Header represents the key-value pairs in a message header.
The header representation is idempotent: if the header can be read and written, the result will be exactly the same as the original (including whitespace). This is required for e.g. DKIM.
Mutating the header is restricted: the only two allowed operations are
inserting a new header field at the top and deleting a header field. This is
again necessary for DKIM.
Code:play
Example¶
package main
import (
"fmt"
"github.com/emersion/go-message/textproto"
)
func main() {
var h textproto.Header
h.Add("From", "<root@nsa.gov>")
h.Add("To", "<root@gchq.gov.uk>")
h.Set("Subject", "Tonight's dinner")
fmt.Println("From: ", h.Get("From"))
fmt.Println("Has Received: ", h.Has("Received"))
fmt.Println("Header fields:")
fields := h.Fields()
for fields.Next() {
fmt.Println(" ", fields.Key())
}
}
func ReadHeader ¶
ReadHeader reads a MIME header from r. The header is a sequence of possibly continued Key: Value lines ending in a blank line.
func (*Header) Add ¶
Add adds the key, value pair to the header. It prepends to any existing fields associated with key.
func (*Header) Copy ¶
Copy creates an independent copy of the header.
func (*Header) Del ¶
Del deletes the values associated with key.
func (*Header) Fields ¶
func (h *Header) Fields() HeaderFields
Fields iterates over all the header fields.
The header may not be mutated while iterating, except using HeaderFields.Del.
func (*Header) FieldsByKey ¶
func (h *Header) FieldsByKey(k string) HeaderFields
FieldsByKey iterates over all fields having the specified key.
The header may not be mutated while iterating, except using HeaderFields.Del.
func (*Header) Get ¶
Get gets the first value associated with the given key. If there are no values associated with the key, Get returns "".
func (*Header) Has ¶
Has checks whether the header has a field with the specified key.
func (*Header) Len ¶
Len returns the amount of fields in the header.
func (*Header) Set ¶
Set sets the header fields associated with key to the single field value. It replaces any existing values associated with key.
type HeaderFields ¶
type HeaderFields interface { // Next advances to the next header field. It returns true on success, or // false if there is no next field. Next() (more bool) // Key returns the key of the current field. Key() string // Value returns the value of the current field. Value() string // Del deletes the current field. Del() }
HeaderFields iterates over header fields. Its cursor starts before the first field of the header. Use Next to advance from field to field.
type MultipartReader ¶
type MultipartReader struct {
// contains filtered or unexported fields
}
MultipartReader is an iterator over parts in a MIME multipart body. MultipartReader's underlying parser consumes its input as needed. Seeking isn't supported.
func NewMultipartReader ¶
func NewMultipartReader(r io.Reader, boundary string) *MultipartReader
NewMultipartReader creates a new multipart reader reading from r using the given MIME boundary.
The boundary is usually obtained from the "boundary" parameter of the message's "Content-Type" header. Use mime.ParseMediaType to parse such headers.
func (*MultipartReader) NextPart ¶
func (r *MultipartReader) NextPart() (*Part, error)
NextPart returns the next part in the multipart or an error. When there are no more parts, the error io.EOF is returned.
type MultipartWriter ¶
type MultipartWriter struct {
// contains filtered or unexported fields
}
A MultipartWriter generates multipart messages.
func NewMultipartWriter ¶
func NewMultipartWriter(w io.Writer) *MultipartWriter
NewMultipartWriter returns a new multipart Writer with a random boundary, writing to w.
func (*MultipartWriter) Boundary ¶
func (w *MultipartWriter) Boundary() string
Boundary returns the Writer's boundary.
func (*MultipartWriter) Close ¶
func (w *MultipartWriter) Close() error
Close finishes the multipart message and writes the trailing boundary end line to the output.
func (*MultipartWriter) CreatePart ¶
func (w *MultipartWriter) CreatePart(header Header) (io.Writer, error)
CreatePart creates a new multipart section with the provided header. The body of the part should be written to the returned Writer. After calling CreatePart, any previous part may no longer be written to.
func (*MultipartWriter) SetBoundary ¶
func (w *MultipartWriter) SetBoundary(boundary string) error
SetBoundary overrides the Writer's default randomly-generated boundary separator with an explicit value.
SetBoundary must be called before any parts are created, may only contain certain ASCII characters, and must be non-empty and at most 70 bytes long.
type Part ¶
type Part struct { Header Header // contains filtered or unexported fields }
A Part represents a single part in a multipart body.
func (*Part) Close ¶
func (*Part) Read ¶
Read reads the body of a part, after its headers and before the next part (if any) begins.
Source Files ¶
- Version
- v0.11.0
- Published
- Dec 19, 2019
- Platform
- linux/amd64
- Imports
- 10 packages
- Last checked
- 9 hours ago –
Tools for package owners.