Refactor debug logging and logger settings in Client

Separated debug logging and logger setting methods to include SMTP client parameter for better encapsulation. Removed commented-out code for cleaner and more manageable codebase.
This commit is contained in:
Winni Neessen 2024-11-22 15:29:22 +01:00
parent 55884786be
commit be4201b05a
Signed by: wneessen
GPG key ID: 385AC9889632126E

View file

@ -812,9 +812,15 @@ func (c *Client) SetSSLPort(ssl bool, fallback bool) {
// Parameters: // Parameters:
// - val: A boolean value indicating whether to enable (true) or disable (false) debug logging. // - val: A boolean value indicating whether to enable (true) or disable (false) debug logging.
func (c *Client) SetDebugLog(val bool) { func (c *Client) SetDebugLog(val bool) {
c.SetDebugLogWithSMTPClient(c.smtpClient, val)
}
func (c *Client) SetDebugLogWithSMTPClient(client *smtp.Client, val bool) {
c.mutex.Lock()
defer c.mutex.Unlock()
c.useDebugLog = val c.useDebugLog = val
if c.smtpClient != nil { if client != nil {
c.smtpClient.SetDebugLog(val) client.SetDebugLog(val)
} }
} }
@ -827,9 +833,15 @@ func (c *Client) SetDebugLog(val bool) {
// Parameters: // Parameters:
// - logger: A logger that satisfies the log.Logger interface to be set for the Client. // - logger: A logger that satisfies the log.Logger interface to be set for the Client.
func (c *Client) SetLogger(logger log.Logger) { func (c *Client) SetLogger(logger log.Logger) {
c.SetLoggerWithSMTPClient(c.smtpClient, logger)
}
func (c *Client) SetLoggerWithSMTPClient(client *smtp.Client, logger log.Logger) {
c.mutex.Lock()
defer c.mutex.Unlock()
c.logger = logger c.logger = logger
if c.smtpClient != nil { if client != nil {
c.smtpClient.SetLogger(logger) client.SetLogger(logger)
} }
} }
@ -935,62 +947,6 @@ func (c *Client) DialWithContext(dialCtx context.Context) error {
c.mutex.Lock() c.mutex.Lock()
c.smtpClient = client c.smtpClient = client
c.mutex.Unlock() c.mutex.Unlock()
/*
ctx, cancel := context.WithDeadline(dialCtx, time.Now().Add(c.connTimeout))
defer cancel()
isEncrypted := false
if c.dialContextFunc == nil {
netDialer := net.Dialer{}
c.dialContextFunc = netDialer.DialContext
if c.useSSL {
tlsDialer := tls.Dialer{NetDialer: &netDialer, Config: c.tlsconfig}
isEncrypted = true
c.dialContextFunc = tlsDialer.DialContext
}
}
connection, err := c.dialContextFunc(ctx, "tcp", c.ServerAddr())
if err != nil && c.fallbackPort != 0 {
// TODO: should we somehow log or append the previous error?
connection, err = c.dialContextFunc(ctx, "tcp", c.serverFallbackAddr())
}
if err != nil {
return err
}
client, err := smtp.NewClient(connection, c.host)
if err != nil {
return err
}
if client == nil {
return fmt.Errorf("SMTP client is nil")
}
c.smtpClient = client
if c.logger != nil {
c.smtpClient.SetLogger(c.logger)
}
if c.useDebugLog {
c.smtpClient.SetDebugLog(true)
}
if c.logAuthData {
c.smtpClient.SetLogAuthData()
}
if err = c.smtpClient.Hello(c.helo); err != nil {
return err
}
if err = c.tls(c.smtpClient, &isEncrypted); err != nil {
return err
}
if err = c.auth(c.smtpClient, isEncrypted); err != nil {
return err
}
*/
return nil return nil
} }
@ -1135,8 +1091,6 @@ func (c *Client) DialAndSend(messages ...*Msg) error {
// - An error if the connection fails, if sending the messages fails, or if closing the // - An error if the connection fails, if sending the messages fails, or if closing the
// connection fails; otherwise, returns nil. // connection fails; otherwise, returns nil.
func (c *Client) DialAndSendWithContext(ctx context.Context, messages ...*Msg) error { func (c *Client) DialAndSendWithContext(ctx context.Context, messages ...*Msg) error {
//c.sendMutex.Lock()
//defer c.sendMutex.Unlock()
client, err := c.SMTPClientFromDialWithContext(ctx) client, err := c.SMTPClientFromDialWithContext(ctx)
if err != nil { if err != nil {
return fmt.Errorf("dial failed: %w", err) return fmt.Errorf("dial failed: %w", err)
@ -1145,10 +1099,10 @@ func (c *Client) DialAndSendWithContext(ctx context.Context, messages ...*Msg) e
_ = c.CloseWithSMTPClient(client) _ = c.CloseWithSMTPClient(client)
}() }()
if err := c.SendWithSMTPClient(client, messages...); err != nil { if err = c.SendWithSMTPClient(client, messages...); err != nil {
return fmt.Errorf("send failed: %w", err) return fmt.Errorf("send failed: %w", err)
} }
if err := c.CloseWithSMTPClient(client); err != nil { if err = c.CloseWithSMTPClient(client); err != nil {
return fmt.Errorf("failed to close connection: %w", err) return fmt.Errorf("failed to close connection: %w", err)
} }
return nil return nil