Corps de mail qui ne passe pas

Corps de mail qui ne passe pas - PHP - Programmation

Marsh Posté le 15-04-2006 à 12:37:48    

Bonjour, je suis en train de programmer un script php qui permet d'envoyer un mail php sur un compte pop ovh.
Voici le code :

Citation :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contact</title>
<link href="stylecontact.css" rel="stylesheet" type="text/css" />
 
</head>
 
<body style="background-color:#CCCCCC;">
<form action="./mail.php?send=ok" method="post">
<span>Nom : </span>
<input type="text" name="nom" size="40"><br /><br />
<span>Mail : </span>
<input type="text" name="mail" size="40"><br /><br />
<span>Date : </span>
<? echo date('d/m/Y') . ' à ' .date('H\hi'); ?><br /><br />
<input type="hidden" name="date" value="<? echo date('d/m/Y') . ' à ' .date('H\hi'); ?>" />
<span>Titre : </span>
<input type="text" name="titre" size="40"><br /><br />
<span>Message : </span><br />
<textarea name="texte" rows="10" cols="40"></textarea><br />
<input type="submit" value="Envoyer">
</form>
 
<?  
$adtomail = 'mailcible';
 
 
if (isset($_GET['send']))
 {
 if ($_GET['send'] == 'ok')
 {
 $frontiere = '-----=' . md5(uniqid(mt_rand())); //génere frontiere
 $contenu = 'Mail de ' . $nom . ' <' . $mail . '>' . '<br /><br />' . 'Envoyé le ' . $date . '<br /><br />' .'Titre : ' . $titre . '<br /><br />' . $texte;
 $headers .= 'MIME-Version: 1.0'."\n";
 $headers .= 'Content-Type: multipart/alternative; boundary="'. $frontiere .'"';
    $headers .= 'To: ' . $adtomail . "\n";
    $headers .= 'From: ' . $nom . '<' . $mail . '>' . "\n";
 $headers .= 'Reply-To: ' . $mail . "\n";
 $contenu2 = nl2br(stripslashes($contenu));
 $message .= '--'.$frontiere."\n";
 $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
 $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
 $message .= $contenu2 . "\n\n";
 $message .= '--'.$frontiere.'--'."\n";
 
 mail( $adtomail, '[Site-LCB] ' . stripslashes($titre), $message, $headers);
 echo '<script language="javascript">window.close();</script>';
 }
 }
?>
</body>
</html>


 
Le seul problème que je rencontre, c'est que la partie $message n'est pas dans le mail quand je le consulte.
Quelqu'un pourrait-il m'aider à savoir pourquoi ?
 
Merci d'avance.
Siron

Reply

Marsh Posté le 15-04-2006 à 12:37:48   

Reply

Marsh Posté le 15-04-2006 à 14:51:22    

Est-ce que ce ne serait pas dû au petit point avant le signe égal dans
 


$message .= '--'.$frontiere."\n";


Sinon, il faudrait essayer avec des messages plus simples.

Reply

Marsh Posté le 15-04-2006 à 15:01:10    

C'est l'équivalent de  $message = $message . $frontiere . "\n";
 
Cela dit, j'ai pris cette partie sur un tuto.
J'avais un code plus simple, mais sur la boite d'ovh il me mettait mon mail dans une piece jointe, alors j'ai décidé d'adapter comme pas mal de tuto le fesait en mettant les limites du mail.

Reply

Marsh Posté le 15-04-2006 à 15:24:43    

Oui, bien sûr je connais ".=", mais ici la variable $message n'est pas intiailisée et peut-être qu'elle contient du garbage, qui empêcherait que le message qui est collé derrière ne soit traité correctement. C'est peu probable, mais on ne sait jamais.

Reply

Marsh Posté le 15-04-2006 à 15:55:19    

Ben si elle est initialisée  :)
 
Edit : j'ai compris ce que tu veux dire, je vais corriger et tester.


Message édité par Siron le 15-04-2006 à 15:56:09
Reply

Marsh Posté le 15-04-2006 à 15:59:31    

J'ai corrigé et ça ne change rien au problème  :(

Reply

Marsh Posté le 15-04-2006 à 16:55:18    

Fait des echo sur $message sa pourrait t'aider a y voir plus claire.
Et je trouve que ya beaucoup de concatenation... tu pourrait en virer pas mal quand même. Apres ça reste mon opinion tu fait ce que tu veu :)

Reply

Marsh Posté le 16-04-2006 à 20:13:11    

J'ai fais un echo sur $message, et il est bien plein pendant l'envoi.
 
Enfait, je crois que il y a quelque chose de mal mis dans les lignes qui décrivent le Content-Type, ce qui peut expliquer peut être que la boite mail ovh ne l'affiche pas.
 
Quelqu'un pourrait m'aider à trouver quoi ?
 
 
Sinon pour les multiples concaténation, c'est juste une version brouillont du script ou je dois ajouter d'autre truc, mais c'est clair que dans la version finnal y en aura moins.
 
Et encore merci pour l'aide.


Message édité par Siron le 16-04-2006 à 20:14:05
Reply

Marsh Posté le 16-04-2006 à 21:48:39    

Un exemple est montré sur la page http://www.freesoft.org/CIE/RFC/1521/18.htm
Les frontières sont définies de manière un peu différentes.
Je me demande s'il n'y aurait pas un problème avec les tirets dans ton code.

Reply

Marsh Posté le 16-04-2006 à 23:22:57    

J'ai trouvé : une histoire de guillemet avec la boundary.
Merci Olivthill, c'est ton site qui m'a mit sur la piste.

Reply

Marsh Posté le 16-04-2006 à 23:22:57   

Reply

Marsh Posté le 17-04-2006 à 11:41:21    

Par contre je me retrouve face à un autre problème :  
 
Je passe le mail en mode text, les saut à la ligne mis dans le formulaire son remplacé par des <br />, mais comme le mail sont en mode text, dans le visualisateur de mail, il me les marques.
 
Y'a pas moyen qu'il mette des \n à la place ?

Reply

Marsh Posté le 17-04-2006 à 12:04:13    

Bon, avec str_replace j'ai résolu mon problème.
 
Mais j'ai un autre faux problème :
 
Dans le corp du mail il m'affiche les indications comme :
 
 
This is a multi-part message in MIME format.
 
-------=6059af0650cf1e327aa5b7b564ef671d
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
 
Bon, c'est pas très grave mais y a t'il moyen de savoir pourquoi ?
Avant il ne le faisait pas.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed