J'ai un second problème sur mon formulaire, moins grave celui là.
Comme je n'y connais pas grand chose, j'ai récupéré grosso modo le code deux formulaires différents.
Le premier me permettant de récupérer les données dans un tableau (du html dans le mail, donc), le second de joindre un document à ces données (via le code <input type="file" name="fichier" /> dans le formulaire).
Ça marche à peu près, sauf que, du coup, chaque validation m'envoie deux mails, un avec les données du formulaire, l'autre avec la pièce jointe.
J'essaie de fusionner maladroitement le code des deux pour ne recevoir plus qu'un seul mail avec données + pièce jointe, mais rien à faire, à peine je touche une ligne, ça casse tout.
Vous auriez une idée ?
Voici le code qui correspond au mail de la pièce jointe :
<?
$name_file = $_FILES['fichier']['name'];
$source=$_FILES['fichier']['tmp_name'];
move_uploaded_file($source, "./".$name_file);
$extension=get_extension($name_file);
$type="text/plain";
if($type=="doc")
{
$type="text/vnd.ms-word";
}
else if($type=="xls")
{
$type="text/vnd.ms-excel";
}
$type2="image/png";
if($extension=="gif")
{
$type2="image/gif";
}
else if($extension=="bmp")
{
$type2="image/bmp";
}
function get_extension($filename)
{
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}
//----------------------------------
// Construction de l'entête
//----------------------------------
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}
$destinataire = "xxxxx@xxxxxxxxxxxxx.fr";
mail($destinataire, "La piece jointe", $msg, $header);
if($name_file!="")
{
unlink($name_file);
}
?>
et celui qui m'envoie données... sans la pièce jointe (dans la mesure du possible, c'est celui ci que j'aimerais adapter, plutôt que l'autre) :
<?
$body = ob_get_contents();
$to = 'xxxxx@xxxxxxxxxxxxx.fr';
$email = 'xxxxx@xxxxxxxxxxxxx.fr';
$fromaddress = "xxxxx@xxxxxxxxxxxxx.fr";
$fromname = "Online Contact";
require("phpmailer.php");
$msg = new PHPMailer();
$msg->From = "xxxxx@xxxxxxxxxxxxx.fr";
$msg->FromName = "Commande PP";
$msg->AddAddress("xxxxx@xxxxxxxxxxxxx.fr");
$msg->AddAddress("xxxxx@xxxxxxxxxxxxx.fr");
$msg->WordWrap = 50;
$msg->IsHTML(true);
$msg->Subject = "Bla bla bla bla";
$msg->Body = $body;
$msg->AltBody = "This is the text-only body";
if(!$msg->Send()) {
$recipient = 'your_email@example.com';
$subject = 'Echec de la commande';
$content = $body;
mail($recipient, $subject, $content, "From: xxxxx@xxxxxxxxxxxxx.fr\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
exit;
}
?>