Envoi des emails avec php

Signaler
Messages postés
8
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
12 octobre 2012
-
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
-
Bonjour j'ai créé le code suivante il envoi les message et la boite de messagerie montre que il ya une pièce jointe lié par cette message mais quand je l'ouvre je ne trouve le ni le contenu ni la pièce jointe.merci d'avance

le code PHP :

<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement
remplis :

";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_SUJET','Message du formulaire de example.com');

// vérification des champs
if (empty($_POST['ligne_1']))
$message .= "Votre Nom
";
if (empty($_POST['ligne_2']))
$message .= "Votre Prenom
";
if (empty($_POST['ligne_3']))
$message .= "Votre Raison Sociale
";
if (empty($_POST['ligne_4']))
$message .= "Votre Fonction
";
if (empty($_POST['telephone_1']))
$message .= "Votre Téléphone
";
if (empty($_POST['texte_1']))
$message .= "Votre Message
";

// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
echo $message; die();
}

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

$select = $_POST['select_1'];
$fic=fopen($_FILES['fichier_1'], "r");
$piece=fread($fic, $_FILES['fichier_1']['size']);
$piece=chunk_split(base64_encode($piece));
fclose('$fic');
$boundary ="-----=".md5(uniqid(rand()));

//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['ligne_1']} "."<{$_POST['email_1']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email_1']."\r\n";
$mail_entete .= "Date:".date("r")."\r\n";
$mail_entete .="Content-type:multipart/mixed;boundary=".$boundary."\r\n"."\r\n";
// préparation du corps du mail
//$mail_corps ="--$boundary"."\r\n";
$mail_corps = "Message de : $ligne_1 $ligne_2\n";
$mail_corps .= "Raison sociale : $ligne_3\n";
$mail_corps .= "Fonction : $ligne_4\n";
$mail_corps .= "Téléphone : $telephone_1\n";
$mail_corps .= "Vous souhaitez : $sqlselect\n";
$mail_corps .= "Message : $texte_1\n";
$mail_corps .="Content-Transfer-Encoding:8bit"."\n\r";
$mail_corps .="Le fichier envoyé contient un fichier attaché.."."\n\r"."\n\r";
//Corps du mail en commençant par le message principal
$mail_corps ="--$boundary"."\r\n";
$mail_corps .= "Content-Type: image/jpeg;name=".$_FILES['fichier_1']."\r\n";
$mail_corps .= "Content-Transfer-Encoding: base64".CRLF;
$mail_corps .= "Content-Disposition: inline;filename=".$_FILES['fichier_1']."\r\n"."\r\n";
$mail_corps .=$piece."\r\n"."\r\n";
$mail_corps .='--'.$boundary.'--'."\r\n";
$mail_corps .=$_POST["mail_corps"];
$mail_corps .= '--'.$boundary.'--'."\r\n";
$subject="$ligne_3";

$destinataire="contact@tunisconseils.com";

// envoi du mail
if (mail($destinataire,$subject,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
echo $msg_ok;
} else {
//Le mail n'a pas été expédié
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
?>

1 réponse

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

il manque le form pour mieux comprendre ...

je te poste un bout de code qui fonctionne

prend le comme base ... une fonction pour contrôler les extensions serait bien avec ...

il faut change la variable $to

<?php
function dopiecejointe($file_name,$boundary){

$file_name =  $_FILES['fichier_du_form']['name'];

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

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

return $msg1;

}else{
}

}


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

// Headers
$headers = 'From: toto du 57 <mail@server.com>'."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";

// Message
$msg = 'Texte affiché par des clients mail ne supportant pas le type MIME.'."\r\n\r\n";

// Message HTML
$msg .= '--'.$boundary."\r\n";

$msg1=null;
if(isset($_FILES['fichier_du_form']['tmp_name'])){
$file_name = move_uploaded_file($_FILES['fichier_du_form']['tmp_name'],$_FILES['fichier_du_form']['name']);
/*redim si photo ou zip*/
$msg1 = dopiecejointe($file_name,$boundary);
}else{
}


echo 'Votre message :
';
echo $tosend = isset($_POST['lemessage']) && strlen($_POST['lemessage'])>2 && strlen($_POST['lemessage'])<500 ? htmlentities(strip_tags(trim($_POST['lemessage']))) : false;

$msg .= 'Content-type: text/html; charset=utf-8'."r\n";
$msg .= ''."\r\n";
$msg .=  wordwrap($tosend,100)."\r\n";
$msg .= ''."\r\n";

$msg .= $msg1; /*la piece jointe*/

//Envoi du mail

$to='xxxxxxxx@gmail.com';
$sujet = 'Mail a pj';
if(mail($to, $sujet, $msg, $headers)){
echo '
 Message envoyé ! ';}
else{
echo '
Une erreur lors de l\'envoi du message !';
}
?>

<form method ="post" action="" enctype="multipart/form-data">     
               
          

  
  
Message : 

  <textarea rows="5" cols="51" name="lemessage"></textarea>
          

    
</f



Bonne programmation !