mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 13:50:49 +01:00
Improve TLS state handling and add SCRAM-SHA-256 auth support
Replaced direct TLSConnectionState call with error handling for TLS state retrieval. Introduced SCRAM-SHA-256 support in the SMTP authentication process.
This commit is contained in:
parent
3013975c6a
commit
27838f5b1f
1 changed files with 10 additions and 7 deletions
17
client.go
17
client.go
|
@ -748,7 +748,11 @@ func (c *Client) tls() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_, c.isEncrypted = c.smtpClient.TLSConnectionState()
|
tlsConnState, err := c.smtpClient.GetTLSConnectionState()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get TLS connection state: %w", err)
|
||||||
|
}
|
||||||
|
c.isEncrypted = tlsConnState.HandshakeComplete
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -790,6 +794,11 @@ func (c *Client) auth() error {
|
||||||
return ErrXOauth2AuthNotSupported
|
return ErrXOauth2AuthNotSupported
|
||||||
}
|
}
|
||||||
c.smtpAuth = smtp.ScramSHA1Auth(c.user, c.pass)
|
c.smtpAuth = smtp.ScramSHA1Auth(c.user, c.pass)
|
||||||
|
case SMTPAuthSCRAMSHA256:
|
||||||
|
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA256)) {
|
||||||
|
return ErrXOauth2AuthNotSupported
|
||||||
|
}
|
||||||
|
c.smtpAuth = smtp.ScramSHA256Auth(c.user, c.pass)
|
||||||
case SMTPAuthSCRAMSHA1PLUS:
|
case SMTPAuthSCRAMSHA1PLUS:
|
||||||
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA1PLUS)) {
|
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA1PLUS)) {
|
||||||
return ErrXOauth2AuthNotSupported
|
return ErrXOauth2AuthNotSupported
|
||||||
|
@ -799,11 +808,6 @@ func (c *Client) auth() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
c.smtpAuth = smtp.ScramSHA1PlusAuth(c.user, c.pass, tlsConnState)
|
c.smtpAuth = smtp.ScramSHA1PlusAuth(c.user, c.pass, tlsConnState)
|
||||||
case SMTPAuthSCRAMSHA256:
|
|
||||||
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA256)) {
|
|
||||||
return ErrXOauth2AuthNotSupported
|
|
||||||
}
|
|
||||||
c.smtpAuth = smtp.ScramSHA256Auth(c.user, c.pass)
|
|
||||||
case SMTPAuthSCRAMSHA256PLUS:
|
case SMTPAuthSCRAMSHA256PLUS:
|
||||||
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA256PLUS)) {
|
if !strings.Contains(smtpAuthType, string(SMTPAuthSCRAMSHA256PLUS)) {
|
||||||
return ErrXOauth2AuthNotSupported
|
return ErrXOauth2AuthNotSupported
|
||||||
|
@ -813,7 +817,6 @@ func (c *Client) auth() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
c.smtpAuth = smtp.ScramSHA256PlusAuth(c.user, c.pass, tlsConnState)
|
c.smtpAuth = smtp.ScramSHA256PlusAuth(c.user, c.pass, tlsConnState)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unsupported SMTP AUTH type %q", c.smtpAuthType)
|
return fmt.Errorf("unsupported SMTP AUTH type %q", c.smtpAuthType)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue