1

How do I validate an array of emails from a textbox before sending them to the wp_mail() function?

$emails = '[email protected];[email protected]
[email protected],[email protected], email5.com';

$emails = preg_split('/[;,\n]/', $emails);
$validEmails = array();
$subject = 'Hey Subject';
$message = 'I am a message';

foreach($emails as $key=>$value){
  if (is_email($value)) {
    array_push($validEmails, $value);
  }
}

wp_mail($validEmails, $subject, $message, $headers);

The sample code above stops on the if (is_email()) condition. How can I validate each email in the array whichever way before sending to the mail function?

1 Answer 1

3

Are you aware you can pass a comma-separated string of email adresses to wp_mail?

// Make sure your email strings only uses comma as a separator
$emails = preg_replace('~[,;\s]+~', ',', $emails);

Then just throw that string into wp_mail’s first argument. Depending on exactly what you want to do with the emails, this approach may be sufficient.

The wp_mail function internally relies on the PHPMailer library (unless you use a redefined wp_mail function). PHPMailer validates the email before adding it to the recipient list. Invalid emails will be skipped.

1
  • I was aware that you could use comma-seperated string but because i was using explode function to get emails from text box, i was running into the problems mentioned above. Thanks very much, much appreciated Geert. Commented Jul 16, 2012 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.