getLatestMailTo method
Implementation
Future<String> getLatestMailTo(
String emailAddr, {
int retry = 10,
int delaySecs = 1,
String? contains,
}) async {
final searchUrl =
Uri.parse('$mailHogURL/api/v2/search?kind=to&query=$emailAddr');
for (var i = 0; i < retry; i++) {
final resp = await http.get(searchUrl);
assert(
resp.statusCode == 200,
'Error fetching $searchUrl [${resp.statusCode}]: ${resp.body}',
);
final decodedResponse = jsonDecode(resp.body) as Map;
final items = decodedResponse['items'] as List;
for (final item in items) {
final msg = item as Map;
if (contains != null) {
final subject =
((item['Content'] as Map)['Headers'] as Map)['Subject'].first;
if (!subject.contains(contains)) {
print('Skipping email $subject');
continue;
}
}
final mime = MimeMessage.parseFromText((msg['Raw'] as Map)['Data']);
return mime.decodeTextPlainPart()!;
}
await Future.delayed(
Duration(seconds: delaySecs),
() {},
); // let's wait a second
}
throw 'No Email found after $retry retries';
}