public async Task<List<IPAddress>> ResolveMxIpAddressesAsync(string domainName)
{
var hostNames = await ResolveMxHostNamesAsync(domainName);
var result = new List<IPAddress>();
foreach (var hostName in hostNames)
{
// TODO: Query for IPV6 as well.
var dnsMessage = await _dnsClient.ResolveAsync(DomainName.Parse(hostName), RecordType.A);
if (IsFailedQuery(dnsMessage))
{
// TODO: Throw specific type
throw new Exception($"Dns query for {domainName} failed.");
}
var aRecords =
dnsMessage.AnswerRecords.OfType<ARecord>();
result.AddRange(from record in aRecords
select record.Address);
}
return result;
}