diff --git a/smtp.go b/smtp.go index 547e04d..4fd4ae5 100644 --- a/smtp.go +++ b/smtp.go @@ -47,6 +47,8 @@ type Dialer struct { // Whether we should retry mailing if the connection returned an error, // defaults to true. RetryFailure bool + // Overrides NetDialTimeout for this dialer + NetDialTimeout func(network, address string, timeout time.Duration) (net.Conn, error) } // NewDialer returns a new SMTP Dialer. The given parameters are used to connect @@ -79,7 +81,11 @@ var NetDialTimeout = net.DialTimeout // Dial dials and authenticates to an SMTP server. The returned SendCloser // should be closed when done using it. func (d *Dialer) Dial() (SendCloser, error) { - conn, err := NetDialTimeout("tcp", addr(d.Host, d.Port), d.Timeout) + ndt := NetDialTimeout + if d.NetDialTimeout != nil { + ndt = d.NetDialTimeout + } + conn, err := ndt("tcp", addr(d.Host, d.Port), d.Timeout) if err != nil { return nil, err }