J'utilise PHPMailer et $ mail-> Send() renvoie une erreur, mon problème est quand j'utilise cette chaîne de messagerie "[email protected]" dans $ mail-> SetFrom (), mais d'un autre côté, cela fonctionne très bien avec presque tous les autres e-mails, c'est-à-dire "[email protected]". Après le débogage du code, j'ai découvert que le problème se trouvait dans le fichier class.phpmailer.php via la fonction ValidateAddress(). Il semble que l'e-mail "[email protected]" est pas valide par FILTER_VALIDATE_EMAIL ni le preg_matchValidateAddress sur PHPMailer se comporte impair
PHPMailer - class.phpmailer.php - Ligne 550:
public static function ValidateAddress($address) {
if (function_exists('filter_var')) { //Introduced in PHP 5.2
if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
return false;
} else {
return true;
}
} else {
return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
}
}
Pourquoi est-ce possible ?? Est-ce que quelqu'un a une idée de ce qui se passe??? pourquoi cet email "[email protected]" n'est pas autorisé?
Veuillez toujours * indiquer * le message d'erreur exact. –
Avez-vous vérifié exactement quelle branche de ce code échoue? Je n'arrive pas à voir le bombardement de filter_var sur un e-mail si simple, donc l'expression régulière est buggée. ... sauf si filter_var fait une recherche DNS sur pleasenoreply.com, qui ne résout pas. –