- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:29 AM
Hello Everyone,
I need help in extracting email addresses from error string. The error string will look like this.
450 4.1.2 <eample@example.com>: Recipient address rejected: domain not found
I tried different RegEx but no luck. Any help is appreciated.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:49 AM
You can use the following script to extract the email address.
var err_str = "450 4.1.2 <eample@example.com>: Recipient address rejected: domain not found";
var invalid_recipient = "";
if (err_str_ln.indexOf("<") != -1 && err_str_ln.indexOf(">") != -1) {
invalid_recipient = err_str.split('<')[1].split('>')[0];
}
Please mark my answer helpful and accept as a solution if it helped 👍✔️
Anvesh

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:54 AM
Yes,
This solution will work for you to extract all emails enclosed in < and >:
// Sample text containing values between < and >
var text = '450 4.1.2 <eample@example.com>: Recipient address rejected: domain not found anotherEmail <example2@text.com>';
// Regular expression to extract values between < and >
var regex = /<([^>]*)>/g;
// Array to store extracted values
var extractedValues = [];
// Extract values using regex
var match;
while ((match = regex.exec(text)) !== null) {
extractedValues.push(match[1]);
}
// Log the extracted values
gs.info('Extracted values:'+ extractedValues);
Thanks
Anil Lande
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:55 AM
You can try the following script then.
var err_arr = err_str.split("\n");
var invalid_recipients = [];
for (key in err_arr) {
var err_str_ln = err_arr[key];
if (err_str_ln.indexOf("<") != -1) {
invalid_recipients.push(err_str_ln.split('<')[1].split('>')[0]);
}
}
Please mark my answer helpful and accept as a solution if it helped 👍✔️
Anvesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:49 AM
You can use the following script to extract the email address.
var err_str = "450 4.1.2 <eample@example.com>: Recipient address rejected: domain not found";
var invalid_recipient = "";
if (err_str_ln.indexOf("<") != -1 && err_str_ln.indexOf(">") != -1) {
invalid_recipient = err_str.split('<')[1].split('>')[0];
}
Please mark my answer helpful and accept as a solution if it helped 👍✔️
Anvesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:52 AM
Thanks @Anil Lande @AnveshKumar M @Sohail Khilji
I observed that some times there are multiple lines of them in the error string, is it possible to extract all of them?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 12:55 AM
You can try the following script then.
var err_arr = err_str.split("\n");
var invalid_recipients = [];
for (key in err_arr) {
var err_str_ln = err_arr[key];
if (err_str_ln.indexOf("<") != -1) {
invalid_recipients.push(err_str_ln.split('<')[1].split('>')[0]);
}
}
Please mark my answer helpful and accept as a solution if it helped 👍✔️
Anvesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2023 01:08 AM - edited 12-12-2023 01:12 AM
Hello @harishbabua8,
Please take a look at the script below in which I have used the regex,
// Your error string with multiple lines
var errorString = "450 4.1.2 <example1@example.com>: Recipient address rejected: domain not found\nSome other text\n450 4.1.2 <example2@example.com>: Another error message";
// Regular expression to extract all email addresses
var regex = /<([^>]+)>/g;
var matches = errorString.match(regex);
// Check if there are matches and retrieve the email addresses
if (matches && matches.length > 0) {
for (var i = 0; i < matches.length; i++) {
var emailAddress = matches[i].substring(1, matches[i].length - 1);
gs.info("Extracted Email Address using Regex: " + emailAddress);
}
} else {
gs.info("No email addresses found using Regex");
}
Feel free to give it a try and if the regex doesn't work as expected, I've also provided an alternative method using string manipulation functions.
// Your error string with multiple lines
var errorString = "450 4.1.2 <example1@example.com>: Recipient address rejected: domain not found\nSome other text\n450 4.1.2 <example2@example.com>: Another error message";
// Find all positions of '<' and '>'
var regex = /<([^>]+)>/g;
var matches = errorString.match(regex);
// Check if there are matches and retrieve the email addresses
if (matches && matches.length > 0) {
for (var i = 0; i < matches.length; i++) {
var startIndex = matches[i].indexOf('<');
var endIndex = matches[i].indexOf('>');
if (startIndex !== -1 && endIndex !== -1) {
var emailAddress = matches[i].substring(startIndex + 1, endIndex);
gs.info("Extracted Email Address using String Manipulation: " + emailAddress);
}
}
} else {
gs.info("No email addresses found using String Manipulation");
}
Let me know if you encounter any issues while testing it out.
Please mark my answer as helpful and the solution accepted if it serves the purpose.
Regards,
Aniket.