diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 8b666daf9fa0acb12bd0fce227fab86f5088d67f..fccf26bf2256b7016d97f3f6d7e99d2f1d5e762a 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -408,8 +408,8 @@ function extraire_lien ($regs) {
 		// petites corrections d'URL
 		if (ereg("^www\.[^@]+$",$lien_url))
 			$lien_url = "http://".$lien_url;
-		else if (email_valide($lien_url))
-			$lien_url = "mailto:".trim($lien_url);
+		else if (strpos($lien_url, "@") && email_valide($lien_url))
+			$lien_url = "mailto:".$lien_url;
 	}
 
 	$insert = "<a href=\"$lien_url\" class=\"spip_$class_lien\""
@@ -475,7 +475,7 @@ function traiter_listes ($texte) {
 				$ajout .= "<li class=\"spip\">";
 				$pile_li[$profond] = "</li>";
 			}
-			else { 
+			else {
 				$ajout = "\n-";	// puce normale ou <hr>
 			}
 
@@ -624,7 +624,7 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 			$lineEnd = strpos($textTable, "|\n");
 		}
 		$newTextTable .= "</table>\n<p>\n";
-		
+
 		$letexte = $textBegin . $newTextTable . $textEnd;
 
 		$tableBeginPos = strpos($letexte, "\n\n|");
@@ -642,7 +642,7 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 
 	$letexte = trim($letexte);
 
-		
+
 	// les listes
 	if (ereg("\n-[*#]", "\n".$letexte))
 		$letexte = traiter_listes($letexte);
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 37b9e5b2bf9acd31439f075ab9afcb6954ec711b..96326459cc9feeee2a62ea8859f537191925b75a 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -628,7 +628,8 @@ function email_valide($adresse) {
 	$adresses = explode(',', $adresse);
 	if (is_array($adresses)) {
 		while (list(, $adresse) = each($adresses)) {
-			if (!eregi("^[-!#\$%&'*+\\./0-9=?a-z^_`{|}~]+(@([-0-9a-z]+\.)*[-0-9a-z]+)?$", trim($adresse)))
+			// RFC 822
+			if (!eregi('^[^()<>@,;:\\"/[:space:]]+(@([-_0-9a-z]+\.)*[-_0-9a-z]+)?$', trim($adresse)))
 				return false;
 		}
 		return true;