2011-10-17 4 views
1

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é?

+0

Veuillez toujours * indiquer * le message d'erreur exact. –

+0

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. –

Répondre

1

mon problème est quand j'utilise cet e-mail-string "[email protected]" dans les $ mail-> setFrom()

Je ne sais pas pourquoi cette adresse spécifique est d'être rejeté et les autres ne le sont pas, mais généralement, vous devez spécifier non seulement une adresse e-mail valide comme adresse de départ, mais une adresse qui est gérée sur le serveur de messagerie à partir duquel vous envoyez le message. Dans le cas contraire, le serveur d'envoi refusera l'envoi ou le serveur de réception risque fort de rejeter le message comme courrier indésirable (spam).

La règle habituelle est de spécifier [email protected] (votredomaine.com étant votre domaine de site Web). Sur certains serveurs, vous devez configurer cette adresse pour pouvoir envoyer des messages.