Documentation
¶
Overview ¶
パッケージメールは、メールメッセージの解析を実装しています。
このパッケージのほとんどは、RFC 5322およびRFC 6532で指定された構文に従います。 主な異なる点:
- 廃止されたアドレス形式は解析されません。これには、経路情報を埋め込んだアドレスも含まれます。
- スペーシング(CFWS構文要素)の完全範囲はサポートされておらず、アドレスを複数行にわたって分割することもありません。
- Unicodeの正規化は行われません。
- 特殊文字()[]:; @ \は、名前でクォートされずに使用することが許可されています。
- 先頭のFrom行は、mbox形式(RFC 4155)と同様に許可されています。
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrHeaderNotPresent = errors.New("mail: header not in message")
Functions ¶
Types ¶
type Address ¶
Addressは1つのメールアドレスを表します。 "Barry Gibbs <bg@example.com>"のようなアドレスは、 Address{Name: "Barry Gibbs", Address: "bg@example.com"}として表されます。
func ParseAddress ¶ added in v1.1.0
ParseAddressは単一のRFC 5322アドレスを解析します。例:「Barry Gibbs <bg@example.com>」
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/log" "github.com/shogo82148/std/net/mail" ) func main() { e, err := mail.ParseAddress("Alice <alice@example.com>") if err != nil { log.Fatal(err) } fmt.Println(e.Name, e.Address) }
Output: Alice alice@example.com
func ParseAddressList ¶ added in v1.1.0
ParseAddressListは与えられた文字列をアドレスのリストとして解析します。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/log" "github.com/shogo82148/std/net/mail" ) func main() { const list = "Alice <alice@example.com>, Bob <bob@example.com>, Eve <eve@example.com>" emails, err := mail.ParseAddressList(list) if err != nil { log.Fatal(err) } for _, v := range emails { fmt.Println(v.Name, v.Address) } }
Output: Alice alice@example.com Bob bob@example.com Eve eve@example.com
type AddressParser ¶ added in v1.5.0
type AddressParser struct { // WordDecoderはRFC 2047でエンコードされた単語のデコーダをオプションで指定します。 WordDecoder *mime.WordDecoder }
AddressParserはRFC 5322形式のアドレスパーサーです。
type Header ¶
Headerはメールメッセージヘッダー内のキーと値のペアを表します。
func (Header) AddressList ¶
AddressListは指定されたヘッダーフィールドをアドレスのリストとして解析します。
type Message ¶
メッセージは解析されたメールメッセージを表します。
func ReadMessage ¶
ReadMessageはrからメッセージを読み取ります。 ヘッダーが解析され、メッセージの本文はmsg.Bodyから読み取れるようになります。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/io" "github.com/shogo82148/std/log" "github.com/shogo82148/std/net/mail" "github.com/shogo82148/std/strings" ) func main() { msg := `Date: Mon, 23 Jun 2015 11:40:36 -0400 From: Gopher <from@example.com> To: Another Gopher <to@example.com> Subject: Gophers at Gophercon Message body ` r := strings.NewReader(msg) m, err := mail.ReadMessage(r) if err != nil { log.Fatal(err) } header := m.Header fmt.Println("Date:", header.Get("Date")) fmt.Println("From:", header.Get("From")) fmt.Println("To:", header.Get("To")) fmt.Println("Subject:", header.Get("Subject")) body, err := io.ReadAll(m.Body) if err != nil { log.Fatal(err) } fmt.Printf("%s", body) }
Output: Date: Mon, 23 Jun 2015 11:40:36 -0400 From: Gopher <from@example.com> To: Another Gopher <to@example.com> Subject: Gophers at Gophercon Message body
Click to show internal directories.
Click to hide internal directories.