| # Sending Mail |
| |
| See also: |
| * [net/smtp](http://golang.org/pkg/net/smtp/) |
| * [Email packages](https://github.com/golang/go/wiki/Projects#email) |
| |
| Streaming the body: |
| |
| ```go |
| package main |
| |
| import ( |
| "bytes" |
| "log" |
| "net/smtp" |
| ) |
| |
| func main() { |
| // Connect to the remote SMTP server. |
| c, err := smtp.Dial("mail.example.com:25") |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer c.Close() |
| // Set the sender and recipient. |
| c.Mail("sender@example.org") |
| c.Rcpt("recipient@example.net") |
| // Send the email body. |
| wc, err := c.Data() |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer wc.Close() |
| buf := bytes.NewBufferString("This is the email body.") |
| if _, err = buf.WriteTo(wc); err != nil { |
| log.Fatal(err) |
| } |
| } |
| ``` |
| |
| Authenticated SMTP: |
| |
| ```go |
| package main |
| |
| import ( |
| "log" |
| "net/smtp" |
| ) |
| |
| func main() { |
| // Set up authentication information. |
| auth := smtp.PlainAuth( |
| "", |
| "user@example.com", |
| "password", |
| "mail.example.com", |
| ) |
| // Connect to the server, authenticate, set the sender and recipient, |
| // and send the email all in one step. |
| err := smtp.SendMail( |
| "mail.example.com:25", |
| auth, |
| "sender@example.org", |
| []string{"recipient@example.net"}, |
| []byte("This is the email body."), |
| ) |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| ``` |