Page 1 sur 1

Résolu ....Newsletter HTML avec pièce jointe

Posté : 05 janv. 2012, 21:34
par brother
Bonjour,
Je rencontre quelques soucis dans ce code source, le format HTML n'est pas restitué correctement... :shock:
Je retrouve les balises <div><p> directement dans le mail... :cry:
C'est à dire ceci :
<div style="padding:5px; background-color:#E3EDC2; border:#FF0000 thin solid">
<img src="http://www.lesite.fr/images/naule.gif" "alt="Si vous lisez ce message, c\'est que vous &ecirc;tes hors ligne." />   
  <p>'.$_POST['texte'].'</p>       
</div>
Qu'ai-je fait comme erreur ?
Voici le code complet, j'ai peut-être tout mélangé ... :oops:

<?php
// mail envoye au client
	/* Si le formulaire est envoye alors on fait les traitements */
if (isset($_POST['envoyer']))
{
/* Recuperation des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$expediteur = stripslashes(trim($_POST['expediteur']));
$destinataire_1 = stripslashes(trim($_POST['destinataire_1']));
$objet = stripslashes(trim($_POST['objet']));
$texte = stripslashes(trim($_POST['texte']));
}
else
{
$expediteur = trim($_POST['expediteur']);
$destinataire_1 = trim($_POST['destinataire_1']);
$objet = trim($_POST['objet']);
$texte = trim($_POST['texte']);
}
/* Si le formulaire n'est pas poste de notre site on renvoie
* vers la page d'accueil */
if($_SERVER['HTTP_REFERER'] != 'http://www.lesite.fr")
{
header('Location: http://www.lesite.fr/');
}
/* On verifie que tous les champs sont remplis */
elseif (empty($expediteur)
|| empty($destinataire_1)
|| empty($objet)
|| empty($texte))
{
$alert = 'Les champs (Expediteur, Destinataire en copie cach&eacute;e, objet et message) doivent &ecirc;tre remplis...';
}
/* Si aucun probleme et aucun cookie cree, on construit le message et on envoie l'e-mail */
elseif (!isset($_COOKIE['sent']))
{
/* Construction du message */
$_Expediteur = $_POST['expediteur'];		  
$destinataire_1 = $_POST['destinataire_1'];
$texte = $_POST['texte'];
$subject = $_POST['objet'];

$_destinataire = " ";
$_sujet = $_POST['objet'];

// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));

//Message :
$_message .= '--'.$boundary."\r\n";
$_message .= "Content-type: text/html; charset=iso-8859-1\r\n";
$_message .= '
<div style="padding:5px; background-color:#E3EDC2; border:#FF0000 thin solid">
<img src="http://www.lesite.fr/images/naule.gif" "alt="Si vous lisez ce message, c\'est que vous &ecirc;tes hors ligne." />   
  <p>'.$_POST['texte'].'</p>       
</div>'."\r\n";
/** Envoi du mail **/
$_entete = "MIME-Version: 1.0\r\n";
$_entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$_entete = "bcc: $destinataire_1\r\n";
$_entete .= "To: \r\n";
$_entete .= "From: $_Expediteur\r\n";

// Pièce jointe 
$file_name = $_POST['fichier1'];
if (file_exists($file_name))
{
	$file_type = filetype($file_name);
	$file_size = filesize($file_name);

	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
	$content = fread($handle, $file_size);
	$content = chunk_split(base64_encode($content));
	$f = fclose($handle);

	$_message .= '--'.$boundary."\r\n";
	$_message .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
	$_message .= 'Content-transfer-encoding:base64'."\r\n\r\n";
	$_message .= $content."\r\n";
}
// Fin
$_message .= '--'.$boundary."\r\n";


if (mail($_destinataire, $_sujet, $_message, $_entete))
{
$alert = 'E-mail envoy&eacute; avec succ&egrave;s';
/* On cree un cookie de courte duree (ici 120 secondes) pour eviter de
* renvoyer un mail en rafraichissant la page */
setcookie("sent", "1", time() + 120);
/* On detruit la variable $_POST */
unset($_POST);
}
else
{
$alert = 'Erreur d\'envoi de l\'e-mail';
}
}
/* Cas ou le cookie est cree et que la page est rafraichie, on detruit la variable $_POST */
else
{
unset($_POST);
}
}
	  
?>

Le code du FORM ...
 <form name="form_mail" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="application/x-www-form-urlencoded">
<table  border="2" cellspacing="20">	
<tr><td></td><td style="text-align:left">Expéditeur :<br/>
<textarea name="expediteur" title="" style="height:25px; width:700px"></textarea></td>
</tr>
<tr><td></td><td style="text-align:left">Destinataire (bcc):<br/>
<textarea title="" name="destinataire_1" style="height:50px; width:700px"></textarea><br/><br/>
</td></tr>
<tr><td></td><td style="text-align:left">Objet :<br/>
<textarea title="Objet de l'envoi du mail" name="objet" style="height:25px; width:700px"></textarea></td>
</tr>
<tr><td></td><td style="text-align:left">Pi&egrave;ce jointe (< 2 Mo) :<br/>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><input style="width:400px" name="fichier1" type="file" size="16"/>
</td>
</tr>

<tr><td></td><td style="text-align:left">Message :<br/>
<textarea name="texte" style="height:158px; width:700px" onkeyup="this.value = this.value.replace(/\n$/,'<br/>\n');" title=""></textarea>
<textarea style="display:none" name='texteconverti'></textarea>
</td>
</tr><tr><td></td><td></td><td> 
<input type="submit" name="envoyer" value="Envoyer" onclick="convert(texte,texteconverti)"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value="Effacer" />

</td></tr></table>
</form>

Merci pour votre aide, j'ai cherché d'autre code dans le forum, mais je n'ai rien trouvé de bien...
Pourtant il semble avoir aperçu il y quelques temps un internaute qui avais laissé son code complet avec envoi de pièce jointe, mais je n'arrive pas à mettre la main dessus...... j'aurais dù le copier à l'époque... #-o

Merci pour votre aide...

Re: Newsletter HTML avec pièce jointe

Posté : 06 janv. 2012, 10:57
par telnes
hello


fait un test simple pour voir si de base ca passe et envoi le mail html à plusieurs destinataire différent (cad gmail, hotmail,yahoo, outlook ...)
<?php
 $to = "[email protected], [email protected]";
 $subject = "HTML email";
 
$message = "
 <html>
 <head>
 <title>HTML email</title>
 </head>
 <body>
 <p>This email contains HTML Tags!</p>
 <table>
 <tr>
 <th>Firstname</th>
 <th>Lastname</th>
 </tr>
 <tr>
 <td>John</td>
 <td>Doe</td>
 </tr>
 </table>
 </body>
 </html>
 ";
 
// Always set content-type when sending HTML email
 $headers = "MIME-Version: 1.0" . "\r\n";
 $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
 
// More headers
 $headers .= 'From: <[email protected]>' . "\r\n";
 $headers .= 'Cc: [email protected]' . "\r\n";
 
mail($to,$subject,$message,$headers);
 ?>