diff options
author | Christopher Speller <crspeller@gmail.com> | 2017-04-24 20:11:36 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-04-24 20:11:36 -0400 |
commit | f5437632f486b7d0a0a181c58f113c86d032b02c (patch) | |
tree | 407388e3003a210a89f4b2128d7ad656f8b79d26 /vendor/gopkg.in/gomail.v2/smtp.go | |
parent | 7f68a60f8c228d5604e0566bf84cabb145d16c37 (diff) | |
download | chat-f5437632f486b7d0a0a181c58f113c86d032b02c.tar.gz chat-f5437632f486b7d0a0a181c58f113c86d032b02c.tar.bz2 chat-f5437632f486b7d0a0a181c58f113c86d032b02c.zip |
Upgrading server dependancies (#6215)
Diffstat (limited to 'vendor/gopkg.in/gomail.v2/smtp.go')
-rw-r--r-- | vendor/gopkg.in/gomail.v2/smtp.go | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/vendor/gopkg.in/gomail.v2/smtp.go b/vendor/gopkg.in/gomail.v2/smtp.go deleted file mode 100644 index cf773a102..000000000 --- a/vendor/gopkg.in/gomail.v2/smtp.go +++ /dev/null @@ -1,175 +0,0 @@ -package gomail - -import ( - "crypto/tls" - "fmt" - "io" - "net" - "net/smtp" -) - -// A Dialer is a dialer to an SMTP server. -type Dialer struct { - // Host represents the host of the SMTP server. - Host string - // Port represents the port of the SMTP server. - Port int - // Auth represents the authentication mechanism used to authenticate to the - // SMTP server. - Auth smtp.Auth - // SSL defines whether an SSL connection is used. It should be false in - // most cases since the authentication mechanism should use the STARTTLS - // extension instead. - SSL bool - // TSLConfig represents the TLS configuration used for the TLS (when the - // STARTTLS extension is used) or SSL connection. - TLSConfig *tls.Config -} - -// NewPlainDialer returns a Dialer. The given parameters are used to connect to -// the SMTP server via a PLAIN authentication mechanism. -// -// It fallbacks to the LOGIN mechanism if it is the only mechanism advertised by -// the server. -func NewPlainDialer(host string, port int, username, password string) *Dialer { - return &Dialer{ - Host: host, - Port: port, - Auth: &plainAuth{ - username: username, - password: password, - host: host, - }, - SSL: port == 465, - } -} - -// Dial dials and authenticates to an SMTP server. The returned SendCloser -// should be closed when done using it. -func (d *Dialer) Dial() (SendCloser, error) { - c, err := d.dial() - if err != nil { - return nil, err - } - - if d.Auth != nil { - if ok, _ := c.Extension("AUTH"); ok { - if err = c.Auth(d.Auth); err != nil { - c.Close() - return nil, err - } - } - } - - return &smtpSender{c}, nil -} - -func (d *Dialer) dial() (smtpClient, error) { - if d.SSL { - return d.sslDial() - } - return d.starttlsDial() -} - -func (d *Dialer) starttlsDial() (smtpClient, error) { - c, err := smtpDial(addr(d.Host, d.Port)) - if err != nil { - return nil, err - } - - if ok, _ := c.Extension("STARTTLS"); ok { - if err := c.StartTLS(d.tlsConfig()); err != nil { - c.Close() - return nil, err - } - } - - return c, nil -} - -func (d *Dialer) sslDial() (smtpClient, error) { - conn, err := tlsDial("tcp", addr(d.Host, d.Port), d.tlsConfig()) - if err != nil { - return nil, err - } - - return newClient(conn, d.Host) -} - -func (d *Dialer) tlsConfig() *tls.Config { - if d.TLSConfig == nil { - return &tls.Config{ServerName: d.Host} - } - - return d.TLSConfig -} - -func addr(host string, port int) string { - return fmt.Sprintf("%s:%d", host, port) -} - -// DialAndSend opens a connection to the SMTP server, sends the given emails and -// closes the connection. -func (d *Dialer) DialAndSend(m ...*Message) error { - s, err := d.Dial() - if err != nil { - return err - } - defer s.Close() - - return Send(s, m...) -} - -type smtpSender struct { - smtpClient -} - -func (c *smtpSender) Send(from string, to []string, msg io.WriterTo) error { - if err := c.Mail(from); err != nil { - return err - } - - for _, addr := range to { - if err := c.Rcpt(addr); err != nil { - return err - } - } - - w, err := c.Data() - if err != nil { - return err - } - - if _, err = msg.WriteTo(w); err != nil { - w.Close() - return err - } - - return w.Close() -} - -func (c *smtpSender) Close() error { - return c.Quit() -} - -// Stubbed out for tests. -var ( - smtpDial = func(addr string) (smtpClient, error) { - return smtp.Dial(addr) - } - tlsDial = tls.Dial - newClient = func(conn net.Conn, host string) (smtpClient, error) { - return smtp.NewClient(conn, host) - } -) - -type smtpClient interface { - Extension(string) (bool, string) - StartTLS(*tls.Config) error - Auth(smtp.Auth) error - Mail(string) error - Rcpt(string) error - Data() (io.WriteCloser, error) - Quit() error - Close() error -} |