diff --git a/scripts/mailing/mailing-send.php b/scripts/mailing/mailing-send.php
index 20afa73ed480c9a0f512e80f1347ee36ef07668c..53ff2aed65771dc15bb0476b4019ddf7de6c2225 100644
--- a/scripts/mailing/mailing-send.php
+++ b/scripts/mailing/mailing-send.php
@@ -139,22 +139,41 @@ if ($resql)
             $obj = $db->fetch_object($resql);
 
             // sendto en RFC2822
-            $sendto = stripslashes($obj->prenom). " ".stripslashes($obj->nom) ."<".$obj->email.">";
-
+            $sendto = stripslashes($obj->prenom). " ".stripslashes($obj->nom) ." <".$obj->email.">";
+
+			// Pratique les substitutions sur le sujet et message
+			$substitutionarray=array(	
+				'__ID__' => $obj->rowid,
+				'__EMAIL__' => $obj->email,
+				'__LASTNAME__' => $obj->nom,
+				'__FIRSTNAME__' => $obj->prenom
+			);
+
+			$substitutionisok=true;
+			$subject=make_substitutions($subject,$substitutionarray);
+			$message=make_substitutions($message,$substitutionarray);
+			// TODO Set substitutionisok to flase if errors
+			
             // Fabrication du mail
             $mail = new CMailFile($subject, $sendto, $from, $message, 
             						array(), array(), array(),
             						'', '', 0, $msgishtml);
+            $mail->errors_to = $errorsto;
+			
             						
 			if ($mail->error)
 			{
 				$res=0;
 			}
+			if (! $substitutionisok)
+			{
+				$mail->error='Some substitution failed';
+				$res=0;
+			}
 
             // Envoi du mail
 			if ($res)
 			{
-	            $mail->errors_to = $errorsto;
     			$res=$mail->sendfile();
 			}
 			
@@ -163,7 +182,10 @@ if ($resql)
                 // Mail envoye avec succes
                 $nbok++;
     
-                $sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=1, date_envoi=SYSDATE() WHERE rowid=".$obj->rowid;
+		        dolibarr_syslog("mailing-send: ok for #".$i.' - '.$mail->error);
+
+                $sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
+				$sql.=" SET statut=1, date_envoi=SYSDATE() WHERE rowid=".$obj->rowid;
                 $resql2=$db->query($sql);
                 if (! $resql2)
                 {
@@ -175,7 +197,10 @@ if ($resql)
                 // Mail en echec
                 $nbko++;
     
-                $sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=-1, date_envoi=SYSDATE() WHERE rowid=".$obj->rowid;
+		        dolibarr_syslog("mailing-send: error for #".$i.' - '.$mail->error);
+
+                $sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
+				$sql.=" SET statut=-1, date_envoi=SYSDATE() WHERE rowid=".$obj->rowid;
                 $resql2=$db->query($sql);
                 if (! $resql2)
                 {
@@ -187,11 +212,12 @@ if ($resql)
         }
     }
 
-    // Met a jour statut global du mail
+    // Loop finished, set global statut of mail
     $statut=2;
     if (! $nbko) $statut=3;
 
     $sql="UPDATE ".MAIN_DB_PREFIX."mailing SET statut=".$statut." WHERE rowid=".$id;
+    dolibarr_syslog("mailing-send: update global status sql=".$sql);
     $resql2=$db->query($sql);
     if (! $resql2)
     {