Skip to content

Instantly share code, notes, and snippets.

@ciaranmahoney
Last active November 21, 2023 23:09
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ciaranmahoney/414ad3252212f37c48652a8fb724d89f to your computer and use it in GitHub Desktop.
Save ciaranmahoney/414ad3252212f37c48652a8fb724d89f to your computer and use it in GitHub Desktop.
Google Apps Script to Run MX Lookups on domains from Google Sheets
function MXLookup(domain) {
try {
var url = "https://dns.google.com/resolve?name=%FQDN%&type=MX".replace("%FQDN%",domain);
//var url = "https://dns.google.com/resolve?name=e-mercy.com&type=MX"; // USED FOR TESTING ONLY
Utilities.sleep(100);
var result = UrlFetchApp.fetch(url,{muteHttpExceptions:true});
var rc = result.getResponseCode();
var response = JSON.parse(result.getContentText());
if (rc !== 200) {
throw new Error( response.message );
}
if (response.Answer[0].data == null) {
var mxRaw = response.Authority[0].data;
} else {
var mxRaw = response.Answer[0].data;
}
var mx = mxRaw.toLowerCase();
if (mx.indexOf("google.com") >= 0 || mx.indexOf("googlemail.com") >= 0) {
var emailProvider = "Google Apps";
}
else if (mx.indexOf("outlook.com") >= 0) {
var emailProvider = "Office 365";
}
else emailProvider = "Other";
return emailProvider;
}
catch (e) {
return "ERROR";
}
}
function MXLookupArray(input) {
if (input.map) {
return input.map(MXLookup);
} else {
try {
var url = "https://dns.google.com/resolve?name=%FQDN%&type=MX".replace("%FQDN%",domain);
//var url = "https://dns.google.com/resolve?name=e-mercy.com&type=MX"; // USED FOR TESTING ONLY
var result = UrlFetchApp.fetch(url,{muteHttpExceptions:true});
var rc = result.getResponseCode();
var response = JSON.parse(result.getContentText());
if (rc !== 200) {
throw new Error( response.message );
}
if (response.Answer[0].data == null) {
var mxRaw = response.Authority[0].data;
} else {
var mxRaw = response.Answer[0].data;
}
var mx = mxRaw.toLowerCase();
if (mx.indexOf("google.com") >= 0 || mx.indexOf("googlemail.com") >= 0) {
var emailProvider = "Google Apps";
}
else if (mx.indexOf("outlook.com") >= 0) {
var emailProvider = "Office 365";
}
else emailProvider = "Other";
return emailProvider;
}
catch (e) {
return "ERROR";
}
}
}
@r-alnairab
Copy link

Thanks for this script.
It helped me a lot.
I made some changes to it to be able to get A record and NS record for a domain.

5 Starts 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment