ehlo method

Issues the enhanced helo command to find out the capabilities of the SMTP server

EHLO or HELO always needs to be the first command that is sent to the SMTP server.

Implementation

Future<SmtpResponse> ehlo() async {
  final result = await sendCommand(SmtpEhloCommand(_clientDomain));
  for (final line in result.responseLines) {
    if (line.code == 250) {
      serverInfo.capabilities.add(line.message!);
      if (line.message!.startsWith('AUTH ')) {
        if (line.message!.contains('PLAIN')) {
          serverInfo.authMechanisms.add(AuthMechanism.plain);
        }
        if (line.message!.contains('LOGIN')) {
          serverInfo.authMechanisms.add(AuthMechanism.login);
        }
        if (line.message!.contains('CRAM-MD5')) {
          serverInfo.authMechanisms.add(AuthMechanism.cramMd5);
        }
        if (line.message!.contains('XOAUTH2')) {
          serverInfo.authMechanisms.add(AuthMechanism.xoauth2);
        }
      } else {
        serverInfo.capabilities.add(line.message!);
        if (line.message!.startsWith('SIZE ')) {
          final maxSizeText = line.message!.substring('SIZE '.length);
          serverInfo.maxMessageSize = int.tryParse(maxSizeText);
        }
      }
    }
  }
  return result;
}