Calling it a day...

This commit is contained in:
Winni Neessen 2022-03-07 18:14:38 +01:00
parent b3554a9578
commit 82bb87ea4f
Signed by: wneessen
GPG key ID: 5F3AF39B820C119D
2 changed files with 11 additions and 7 deletions

View file

@ -50,9 +50,6 @@ type Option func(*Client)
var ( var (
// ErrNoHostname should be used if a Client has no hostname set // ErrNoHostname should be used if a Client has no hostname set
ErrNoHostname = errors.New("hostname for client cannot be empty") ErrNoHostname = errors.New("hostname for client cannot be empty")
// ErrNoSTARTTLS should be used if the target server does not support the STARTTLS protocol
ErrNoSTARTTLS = errors.New("target host does not support STARTTLS")
) )
// NewClient returns a new Session client object // NewClient returns a new Session client object
@ -120,6 +117,11 @@ func (c *Client) TLSPolicy() string {
return fmt.Sprintf("%s", c.tlspolicy) return fmt.Sprintf("%s", c.tlspolicy)
} }
// ServerAddr returns the currently set combination of hostname and port
func (c *Client) ServerAddr() string {
return fmt.Sprintf("%s:%d", c.host, c.port)
}
// SetTLSPolicy overrides the current TLSPolicy with the given TLSPolicy value // SetTLSPolicy overrides the current TLSPolicy with the given TLSPolicy value
func (c *Client) SetTLSPolicy(p TLSPolicy) { func (c *Client) SetTLSPolicy(p TLSPolicy) {
c.tlspolicy = p c.tlspolicy = p
@ -161,10 +163,10 @@ func (c *Client) DialWithContext(uctx context.Context) error {
var co net.Conn var co net.Conn
var err error var err error
if c.ssl { if c.ssl {
co, err = td.DialContext(ctx, "tcp", fmt.Sprintf("%s:%d", c.host, c.port)) co, err = td.DialContext(ctx, "tcp", c.ServerAddr())
} }
if !c.ssl { if !c.ssl {
co, err = nd.DialContext(ctx, "tcp", fmt.Sprintf("%s:%d", c.host, c.port)) co, err = nd.DialContext(ctx, "tcp", c.ServerAddr())
} }
if err != nil { if err != nil {
return err return err
@ -180,7 +182,8 @@ func (c *Client) DialWithContext(uctx context.Context) error {
if !c.ssl && c.tlspolicy != NoTLS { if !c.ssl && c.tlspolicy != NoTLS {
if ok, _ := c.sc.Extension("STARTTLS"); !ok { if ok, _ := c.sc.Extension("STARTTLS"); !ok {
return ErrNoSTARTTLS return fmt.Errorf("STARTTLS mode set to: %q, but target host does not support STARTTLS",
c.tlspolicy)
} }
if err := c.sc.StartTLS(c.tlsconfig); err != nil { if err := c.sc.StartTLS(c.tlsconfig); err != nil {
return err return err

View file

@ -9,7 +9,8 @@ import (
) )
func main() { func main() {
c, err := mail.NewClient("manjaro-vm.fritz.box", mail.WithTimeout(time.Millisecond*500)) th := os.Getenv("TEST_HOST")
c, err := mail.NewClient(th, mail.WithTimeout(time.Millisecond*500))
if err != nil { if err != nil {
fmt.Printf("failed to create new client: %s\n", err) fmt.Printf("failed to create new client: %s\n", err)
os.Exit(1) os.Exit(1)