12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package smtp
- import (
- "errors"
- "fmt"
- "net/smtp"
- )
- type SMTP struct {
- config Config
- }
- func NewSMTP(c Config) (*SMTP, error) {
- if len(c.username) == 0 {
- return nil, errors.New("empty username")
- }
- if len(c.password) == 0 {
- return nil, errors.New("empty password")
- }
- if len(c.host) == 0 {
- c.host = defaultHost
- }
- if c.port == 0 {
- c.port = defaultPort
- }
- return &SMTP{config: c}, nil
- }
- func (s SMTP) Send(recipient string, subject string, content string, html bool) error {
- contentType := "text/plain"
- if html {
- contentType = "text/html"
- }
- msg := []byte("To: " + recipient + "\r\n" +
- "From: " + s.config.username + "\r\n" +
- "Subject: " + subject + "\r\n" +
- "Content-Type: " + contentType + "; charset=\"UTF-8\"" + "\n\r\n" +
- content + "\r\n")
- return smtp.SendMail(
- fmt.Sprintf("%s:%d", s.config.host, s.config.port),
- getAuth(s.config.username, s.config.password),
- s.config.username,
- []string{recipient},
- msg,
- )
- }
|