par
albat » 28 mars 2012, 08:54
Tout d'abord, j'ai réécrit ton code de manière un peu plus lisible :
while ($row_docs_echeance = mysql_fetch_array($result_docs_echeance))
{ // Récupérations des valeurs
$fichedocid = $row_docs_echeance['fichedocid'];
$titre = tronque($row_docs_echeance['titre']);
// Lien dans le mail
// Avec , l'affichage est bon, mais pas à la réception du message dans Thunderbird.
// Par contre avec \n, rien ne va à la ligne mais j'ai tout les résultats.
$lien .= $titre.'-<b>'.$fichedocid.'</b>';
}
// Envois du mail au client extérieur
$sujet = 'Alerte documents arrivant à échéance';
$from = "From: ".$email_admin."\n"
. "MIME-version: 1.0\n"
. "Content-type: text/html; charset=ISO-8859-1\n"
. "Return-Path: ".$email_admin."\n"
. "Reply-To: ".$email_admin."\n";
$corps = '<link rel=stylesheet href="http://'.$serveur.'/css/mail.css" type=text/css>
<table style="width:760px;border:0">
<tr><td><img src="http://'.$serveur.'/images/new_entete2.jpg" alt=""></td></tr>
<tr><td><span class="titre_cellule"> <b>Voici la liste du ou des document(s)
qui vont arriver à échéance pour le mois de : '.$mois_encours.'</b>'.$lien.'</span>
<span class="avertissement"> Merci de vous connecter sur le portail,
et d\'assurer le cycle de vie de ces documents.</span></td></tr>
</table><br>';
print $corps."\n";
// J'affiche le corps du message dans le navigateur, tout est Ok !
if (mail($email_admin,mb_encode_mimeheader($sujet,"ISO-8859-1","Q"),$corps,$from))
{ if ($pass_alerte != 1)
{ ecrire_log('Document échéance','Alerte sur les documents arrivant à échéance envoyés avec succés');
$alerte .= ' Alerte sur les documents arrivant à échéance envoyés avec succés.';
}
else
{ if ($pass_alerte != 1)
{ ecrire_log('Document échéance','Alerte sur les documents arrivant à échéance non envoyés.');
$alerte .= ' Alerte sur les documents arrivant à échéance non envoyés.';
}
}
J'ai supprimé qqs lignes totalement inutiles, réécrit les balises en minuscules,
extrait les variables PHP des chaines de caractères HTML, etc.
Cela m'a permis de voir, pour commencer, que l'imbrication de tes tests en bas de ton script est incorrecte.
En effet, tu effectues un test sur la variable
$pass_alert en vérifiant que sa valeur est différente de 1.
- si cette condition est vérifiée ($pass_alerte != 1), tu affiches "Envoyé avec succès"
- si cette condition n'est pas vérifiée ($pass_alerte = 1), tu retestes
$pass_alert !
Y a pas comme un souci ?

Tout d'abord, j'ai réécrit ton code de manière un peu plus lisible :
[php]while ($row_docs_echeance = mysql_fetch_array($result_docs_echeance))
{ // Récupérations des valeurs
$fichedocid = $row_docs_echeance['fichedocid'];
$titre = tronque($row_docs_echeance['titre']);
// Lien dans le mail
// Avec , l'affichage est bon, mais pas à la réception du message dans Thunderbird.
// Par contre avec \n, rien ne va à la ligne mais j'ai tout les résultats.
$lien .= $titre.'-<b>'.$fichedocid.'</b>';
}
// Envois du mail au client extérieur
$sujet = 'Alerte documents arrivant à échéance';
$from = "From: ".$email_admin."\n"
. "MIME-version: 1.0\n"
. "Content-type: text/html; charset=ISO-8859-1\n"
. "Return-Path: ".$email_admin."\n"
. "Reply-To: ".$email_admin."\n";
$corps = '<link rel=stylesheet href="http://'.$serveur.'/css/mail.css" type=text/css>
<table style="width:760px;border:0">
<tr><td><img src="http://'.$serveur.'/images/new_entete2.jpg" alt=""></td></tr>
<tr><td><span class="titre_cellule"> <b>Voici la liste du ou des document(s)
qui vont arriver à échéance pour le mois de : '.$mois_encours.'</b>'.$lien.'</span>
<span class="avertissement"> Merci de vous connecter sur le portail,
et d\'assurer le cycle de vie de ces documents.</span></td></tr>
</table><br>';
print $corps."\n";
// J'affiche le corps du message dans le navigateur, tout est Ok !
if (mail($email_admin,mb_encode_mimeheader($sujet,"ISO-8859-1","Q"),$corps,$from))
{ if ($pass_alerte != 1)
{ ecrire_log('Document échéance','Alerte sur les documents arrivant à échéance envoyés avec succés');
$alerte .= ' Alerte sur les documents arrivant à échéance envoyés avec succés.';
}
else
{ if ($pass_alerte != 1)
{ ecrire_log('Document échéance','Alerte sur les documents arrivant à échéance non envoyés.');
$alerte .= ' Alerte sur les documents arrivant à échéance non envoyés.';
}
}
[/php]J'ai supprimé qqs lignes totalement inutiles, réécrit les balises en minuscules,
extrait les variables PHP des chaines de caractères HTML, etc.
Cela m'a permis de voir, pour commencer, que l'imbrication de tes tests en bas de ton script est incorrecte.
En effet, tu effectues un test sur la variable [b]$pass_alert[/b] en vérifiant que sa valeur est différente de 1.
- si cette condition est vérifiée ($pass_alerte != 1), tu affiches "Envoyé avec succès"
- si cette condition n'est pas vérifiée ($pass_alerte = 1), tu retestes [b]$pass_alert[/b] !
Y a pas comme un souci ? ;)