uidSearchMessages method

Future<SearchImapResult> uidSearchMessages({
  1. String searchCriteria = 'UNSEEN',
  2. List<ReturnOption>? returnOptions,
  3. Duration? responseTimeout,
})

Searches messages by the given searchCriteria like 'UNSEEN' or 'RECENT' or 'FROM sender@domain.com'.

Is only supported by servers that expose the UID capability. When augmented with zero or more returnOptions, requests an extended search. This request times out after the specified responseTimeout

Implementation

Future<SearchImapResult> uidSearchMessages({
  String searchCriteria = 'UNSEEN',
  List<ReturnOption>? returnOptions,
  Duration? responseTimeout,
}) {
  final parser =
      SearchParser(isUidSearch: true, isExtended: returnOptions != null);
  final buffer = StringBuffer('UID SEARCH ');
  if (returnOptions != null) {
    buffer
      ..write('RETURN (')
      ..write(returnOptions.join(' '))
      ..write(') ');
  }
  buffer.write(searchCriteria);
  final cmdText = buffer.toString();
  buffer.clear();
  final searchLines = cmdText.split('\n');
  final cmd = searchLines.length == 1
      ? Command(
          cmdText,
          writeTimeout: defaultWriteTimeout,
          responseTimeout: responseTimeout,
        )
      : Command.withContinuation(
          searchLines,
          writeTimeout: defaultWriteTimeout,
          responseTimeout: responseTimeout,
        );

  return sendCommand<SearchImapResult>(cmd, parser);
}