Problème encodage adresse mail

Eléphant du PHP | 67 Messages

11 mars 2013, 22:11

bonsoir à tous,

Je vous écris ce soir car j'ai un problème d'insertion dans une base de donnée mysql lorsque je tente d'inserer une adresse mail avec un arobase;
Les accents fonctionnent correctement il y a que ce caractère qui ne passe pas.

voici la parti du code qui insère dans la base de donnée :
    $objetMail = imap_utf8($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $objetMail = utf8_encode($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $emailExp = $from[0]->mailbox."@".$from[0]->host;
    $corpsMail = get_part ($mbox, $key+1, "TEXT/PLAIN");
    $corpsMail = imap_utf8($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $corpsMail = utf8_encode($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $idtMail= $key+1;

        //Traitement Ins�rtion dans la base mysql
        If (stripos($corpsMail, 'NAS_Srv-Home est termin') !== FALSE || stripos($objetMail, 'backup successful') !== FALSE || stripos($corpsMail, 'Sauvegarde ok') !== FALSE)
        {
         mysql_query("INSERT INTO sauvegardes (sujet,corpsmail,datemail,dateactuelle,etatsauvegarde,txsauvegarde) VALUES ('".addslashes($objetMail)."','".addslashes($corpsMail)."','$dateMail',now($),'$sauvegardeok','100')");
        }
        else
                 {
                        mysql_query("INSERT INTO sauvegardes (sujet,corpsmail,datemail,dateactuelle,etatsauvegarde,txsauvegarde) VALUES ('$objetMail','$corpsMail','$dateMail',now(),'$sauvegardenok','0')");
                 }
    }
    }
Voici la partie du code qui vérifie :
// on cr�e la requ�te SQL
$sql = 'SELECT sujet,corpsmail,datemail,dateactuelle,etatsauvegarde FROM sauvegardes ORDER BY dateactuelle DESC LIMIT 0,12';
?>
<TABLE width=100% border=1>
<TR>
<TD width=10% ><center><font color="red"><b>Date verification</b></font></center></TD>
<TD width=45% ><center><font color="red"><b>Sujet</b></font></center></TD>
<TD width=45% ><center><font color="red"><b>Mail</b></font></center></TD>
<TD width=20% ><center><font color="red"><b>Date de la sauvegarde</b></font></center></TD>
<TD width=10% ><center><font color="red"><b>Etat sauvegarde</b></font></center></TD>
</TR>

<?php


$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
    {
    echo '<TR><b><TD width=10% ><center>'.$data['dateactuelle'].'</b> </center></TD>';
    echo '<body><TD width=45% ><center><b>'.$data['sujet'].'</b></center></TD></body>';
        $corp=$data['corpsmail'];
        $corp = nl2br( $corp );

        echo '<body><TD width=45% ><center><b>'.$corp.'</b></center></TD></body>';
        echo '<b><TD width=20% ><center>'.$data['datemail'].'</b></center></TD>';
        echo '<b><TD width=10% ><center>'.$data['etatsauvegarde'].'</b> </center></TD></TR>';
        }
        mysql_close();
        ?>

</TABLE>


</CENTER>
Je tiens à préciser que dans la base de donnée, l'arobase apparait bien.
Mon fichier qui affice à bien la balise meta suivant :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Je pense que le problème vient de l'affichage mais je ne sais pas d'ou.

Pouvez-vous m'aider ?

Merci beaucoup.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 mars 2013, 22:27

salut,


je pense que le problème est surtout du à ton code html.

Il est préférable de respecter les normes si tu ne veux pas de soucis, c'est la première chose à faire pour essayer de résoudre ton problème.

<table width=100% border=1>
	<thead>
		<tr>
		<th width=10% >date verification</th>
		<th width=45% >sujet</th>
		<th width=45% >mail</th>
		<th width=20% >date de la sauvegarde</th>
		<th width=10% >etat sauvegarde</th>
		</tr>
	</thead>
	<tbody>
	<?php
	$req = mysql_query($sql) or die('erreur sql !<br>'.$sql.'<br>'.mysql_error());
	while($data = mysql_fetch_assoc($req)){
		echo '<tr><td width="10%" >'.$data['dateactuelle'].'</td>';
		echo '<td width="45%" >'.$data['sujet'].'</td>';
		echo '<td width="45%" >'.nl2br($$data['corpsmail']).'</b></center></td>';
		echo '<td width="20%" >'.$data['datemail'].'</td>';
		echo '<td width="10%" >'.$data['etatsauvegarde'].'</td>
		</tr>';
	}
	mysql_close();
	?>
	</tbody>
</table>
ton code php est quand lui, aussi, en mauvais posture, la colorisation syntaxique du forum te montre, en partie, les soucis (de chaîne de caractères, de variable manquante etc etc).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 67 Messages

11 mars 2013, 22:31

Oui concernant le code, c'est un mauvais copié collé que je viens de corriger.

Je fais les modifs que tu indique mais il ne m'affiche plus rien dans le corps du mail :(

Edit : J'ai trouvé, il y avait un $ en trop mais par contre les adresses mails ne s'affichent toujours pas :-(

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 mars 2013, 23:00

affiche le code source généré et regarde ce qu'il y a dedans.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 67 Messages

11 mars 2013, 23:03

J'ai ceci dans la source :
De: "NAS- Synology DiskStation" <[email protected]><br />
�?: <[email protected]><br />
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 mars 2013, 00:17

donc tous ce passe bien.

les chevron indiquant un tag html c'est normal qu'ils ne soient pas interprétés. => htmlspecialchars ou htmlentities.



@+
Il en faut peu pour être heureux ......