Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1707 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Corps de mail qui ne passe pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Corps de mail qui ne passe pas

n°1347414
Siron
Posté le 15-04-2006 à 12:37:48  profilanswer
 

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

mood
Publicité
Posté le 15-04-2006 à 12:37:48  profilanswer
 

n°1347456
olivthill
Posté le 15-04-2006 à 14:51:22  profilanswer
 

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.

n°1347461
Siron
Posté le 15-04-2006 à 15:01:10  profilanswer
 

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.

n°1347464
olivthill
Posté le 15-04-2006 à 15:24:43  profilanswer
 

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.

n°1347469
Siron
Posté le 15-04-2006 à 15:55:19  profilanswer
 

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
n°1347472
Siron
Posté le 15-04-2006 à 15:59:31  profilanswer
 

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

n°1347483
baka-lulu
Posté le 15-04-2006 à 16:55:18  profilanswer
 

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 :)

n°1347779
Siron
Posté le 16-04-2006 à 20:13:11  profilanswer
 

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
n°1347876
olivthill
Posté le 16-04-2006 à 21:48:39  profilanswer
 

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.

n°1347919
Siron
Posté le 16-04-2006 à 23:22:57  profilanswer
 

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

mood
Publicité
Posté le 16-04-2006 à 23:22:57  profilanswer
 

n°1348024
Siron
Posté le 17-04-2006 à 11:41:21  profilanswer
 

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 ?

n°1348033
Siron
Posté le 17-04-2006 à 12:04:13  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Corps de mail qui ne passe pas

 

Sujets relatifs
Encodage envoie de mailOù est passé xemacs.org?
Pb ancres - mail htmlconfigurer l'envoi de mail avec apache
Deux mail() dans une pagecomparaison de mot de passe selon .htpasswd
smtp et mail avec yahooFormulaire mail d'inscription avec message de confirmation
Rexec et Mot de Passemail
Plus de sujets relatifs à : Corps de mail qui ne passe pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR