Tom's Guide > Forum > Programmation > Envoi d'email avec piece jointe

Envoi d'email avec piece jointe

Forum Programmation : Envoi d'email avec piece jointe

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut à toute la commnauté !
Je possède un site sous free et je souhaite faire un système d'envoi de fichier en ligne.
Je m'explique, je veux un formulaire (c'est fait) qui permette d'envoyer un email (c'est fait) AVEC pièce jointe ! Et ca c'est pas fait. Pour le moment je reçoi juste le chemin d'accès du fichier de l'envoyeur.
J'ai essayé plein de scripts PHP mais je suis sous free... alors ca marche pas !
Heeeeelp !!! :-(

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

helas sous free la fonction mail est desactiver pour eviter le spam, il te faudra prendre un autre hebergeur pour ca

Répondre à telynor

Je te conseille le particulier chez eurower.net il est super bien et c'est extensible serieux avec toute les focntions phph...

@++

Répondre à Teoteed

Non c'est bon free me convient : j'ai trouvé une alternative simple : le fichier est uploadé sur le ftp et je reçois un mail. ;-)

Répondre à zak888

mdr...pourquoi toujours faire l'impossible pour rester dans le gratuit ??? sérieusement si tu veux un hébergement digne de ce nom il faut voir vers des solutions pros absoluement raisonnables en termes de prix... ;-)

Répondre à adilelgh

Sauf que quand tu est etudiant et que tu n'a pas de revenu y a un HIC...

Répondre à Teoteed

il a toujours le dernier mot ce " programmateur " il a de l'ambition !!! lol :p:d

Répondre à mecam

oué "programmeur " pardon a toi

Répondre à mecam

Merci mecam n'en fait pas trop non plus...

Répondre à Teoteed

ah lalla mais quand on aime les points on en devient accros !!! je parle pas pour moi !!! llol :p:d

Répondre à mecam

retourne apprendre le html gars ;)

Répondre à Teoteed

Bjr,
Moi j'ai vraiment besoin que mes visiteurs envoi leur photo en pièce jointe mais je n'arrive pas à activer la fonction?
Voici mon
formulaire
Merci de me filer un coup de pouce :-?

Répondre à kid75

lol deja on est pas obligé de tout remplir l'envoie marche meme si on rempli pas ^^
ensuite j'ai mi un fichier torrent et ca a marché aussi :p

Sinon ^^ voir ton formulaire comme ca :p ca nous aide pas pour t'aider ^^ ( c'est plus le code qui pourrait nous permettre de t'aider )

Répondre à Resurectin

ok voici mon fichier formulaire.php

<html>
<head>
<script language="javascript">
<!--
function verif2(mail) {
var arobase = mail.indexOf("@" )
var point = mail.lastIndexOf("." )
if((arobase < 2)||(point + 2 > mail.length)||(point < arobase+2))
{
alert("Email absent ou erroné !" );
document.formulaire.mail.focus();
return false;
}
else
{
if (formulaire.nom.value=="" )
{
alert("Veuillez remplir le champ Nom" );
document.formulaire.nom.focus();
return false;
}
else
{
if (formulaire.prenom.value=="" )
{
alert("Veuillez remplir le champ Prenom" );
document.formulaire.prenom.focus();
return false;
}
else
{
return true
}
}
}
}
}

//-->
</script>

</head><body bgcolor="#99CCFF"><form name="formulaire" method="post" action="envoi.php" onSubmit="return verif2(this.mail.value)" ENCTYPE="multipart/form-data">
<td><table width="100%" height="305" border="0" bordercolor="#FF0000">
<tr>
<td height="49" colspan="4"><p align="center"></p>
<p align="center"><font color="red"><strong><em><u>ENTREZ
VOS INFORMATIONS CI-DESSOUS:</u></em></strong></font></p>
</td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Nom :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input type="text" name="nom"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Prénom :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input type="text" name="prenom"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Email :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input name="mail" type="text" size="40"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Vos photos :</b> <font color="#FF0000">*</font></div></td>
<td><input type="file" name="photos" size="40" MAXLENGTH="80">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="30000">
</td>
<td></td>
</tr>
<tr>
<td colspan="4"><div align="center"><font color="#FF0000">* <font color="#000000" size="1" face="Arial, Helvetica, sans-serif">A
completer pour envoyer !</font></font></div></td>
</tr>
<tr>
<td width="14%"><div align="center"> </div></td>
<td colspan="2"><hr></td>
<td width="12%"></td>
</tr>
<tr valign="bottom">
<td height="37" colspan="2"><div align="right"><b>Age :</b></div></td>
<td colspan="2"><b>18-25
<input type="radio" name="1" 1 value="18-25"> 25-35
<input type="radio" name="1" 2 value="25-35"> +35
<input type="radio" name="1" 3 value="+35"></b></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Je suis :</b></div></td>
<td colspan="2"><b>amateur :
<input type="radio" name="2" 1 value="amateur">semi-professionnel
:
<input type="radio" name="2" 2 value="semi-professionnel"></b></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>J'accepte des scènes ( </b><A
onclick="window.open('note.html','Info','resizable=no, toolbar=no, location=no, status=no, menubar=no, width=750, height=300';return(false)"
href="note.html"><b>note</b></A><b> ) :</b></div></td>
<td colspan="2"><b>solo :
<input type="radio" name="3" 1 value="solo">avec 1 partenaire
:
<input type="radio" name="3" 2 value="avec 1 partenaire"> groupe
:
<input type="radio" name="3" 3 value="groupe"></b></td>
</tr>
<tr>
<td width="14%"><div align="center"> </div></td>
<td colspan="2"><hr></td>
<td width="12%"></td>
</tr>
<tr valign="middle">
<td height="50" colspan="4"> <div align="center">
<input type="reset" name="Submit2" value="Effacer">
<input type="submit" name="Submit" value="Envoyer">
</div></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>


et mon fichier envoi.php


<body bgcolor="#99CCFF">
<p align="center"></p>
<p align="center"></p>
<p align="center"></p>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"> </p>
<div align="center">
<table width="41%" height="140" border="1">
<tr>
<td><div align="center">
<p><b>VOS INFORMATIONS <br>
<br>
ONT BIEN ETE ENVOYEES.</b> </p>
<p><b>Merci.</b></p>
</div></td>
</tr>
</table>
</div>

<p></p>
<p></p>
<p>                                                                                       <INPUT TYPE=button NAME=Bouton VALUE=" Retour "
onclick="document.location.href='http://kapitolprod.maisonx.com/page1.html'"></p>
<div align="center">

<?php
if ($_FILES['vos photos']['size'] > 30000){
// Traitement de l'erreur
}
mail("kapitolprod@netcourrier.com","Formulaire de reponse",
"Formulaire de reponse:\n
Nom : ".$_POST['nom']."
Prenom : ".$_POST['prenom']."
Mail : ".$_POST['mail']."
Age : ".$_POST['1']."
Je suis : ".$_POST['2']."
J'accepte des scenes : ".$_POST['3']."
" );
?>
</div>


Le soucis c'est que je n'ai pas le fichier attaché "Les photos" sur le mail?




Répondre à kid75

bon alors deja ta partie en javascript marche pas hein ^^

sinon pour la piece jointe, je vois pas ou tu rataches la piece jointe au mail donc ton erreur viens certainement de la.
le fichier est up sur le compte du site mais pas chez toi vu que tu l'associes pas au mail. ( ou alors t'as pas mi cette partie du code )
( qd tu utilises le type="file" dans un formulaire ca va copier le fichier sur le serveur a l'emplacement prévu par defaut donc faut que tu fasses un move_upload_file pour mettre le fichier deja a un endroit qui t'es accessible. )
et ensuite l'attacher au mail.

Répondre à Resurectin

Ouille,je te remercie infiniment pour ta réponse et ta patience cependant étant un peu débutant,peux-tu etre plus basique dans tes explications?

Et pour ma partie Java qu'est-ce qui ne va pas?
Voilà ceux qu'on m'a conseillé sur un autre forum:

"Pour un upload, c'est pas la meilleure des façons, il est déjà plus logique de faire"

code :


if ($_FILES['nom_du_fichier']['size'] > 30000){
// Traitement de l'erreur
} "

Mais je ne sais pas ou insérer ce code et est-il bon?
D'autre part cela n'est pas suffisant dois-je modifier mon fichier formulaire.php ???

Désolé de te poser toutes ses questions;-)

Répondre à kid75

ok,
est-ce que ce script java va faire l'affaire pour vérifier l'adresse mail

Citation :


function verifiermail(mail) {
if ((mail.indexOf("@" )>=0)&&(mail.indexOf("." )>=0)) {
return true
} else {
alert("Mail invalide !" );
return false
}
}

Répondre à kid75

alors qd je parle de ta partie java c'est qu'elle marche pas.
on peut enovoyer le formulaire sans tout remplir. ( ce qui devrait produire des erreurs normalement )

Pour ton probleme de piece jointe. La fonction que tu utilises upload le fichier sur le serveur pas sur ton mail. capiche ?

pour ce qui est de ta vérification sur la taille, ca me parait petit 30ko en taille maxi. ( enfin ca c'est toi qui voit. )
mais je le repete je vois pas bien comment tu pourrais avoir une piece jointe sur ton mail sans y mettre le fichier uploadé.

Répondre à Resurectin

Citation :


resurectin a écrit :


faut que tu fasses un move_upload_file pour mettre le fichier deja a un endroit qui t'es accessible.
et ensuite l'attacher au mail.



Merci pour ta patience mais je ne comprends pas? :-?
Aurais-tu l'amabilité de modifier mes codes,de façon à ce qu'ils fonctionnent??? ;-)

Répondre à kid75

en gros tu l'utilises comme ca la fonction move_upload_file

Citation :

if(move_uploaded_file($Fichier, "upload/appli/".$rep."/".$Fichier_name)) {



la ca fait : si le fichier est deplacer alors ( donc ca effectue le deplacement )

si tu veux des complements d'informations dessus je te conseil d'aller voir la : nexen

tu tapes le nom de la fonction dans l'encadré de recherche et ca te dira comment l"utiliser etc...

Répondre à Resurectin

ok j'ai modifié mes fichiers mais toujours pas d'envoi avec pièce jointe,je te remets mes fichiers:

Formulaire

Code :

<script language="javascript">
<!--
function verif(mail)
{
var arobase = mail.indexOf("@" )
var point = mail.lastIndexOf("." )
if((arobase < 2)||(point + 2 > mail.length)||(point < arobase+2))
{
alert("Email absent ou erroné !" );
document.formulaire.mail.focus();
return false;
}
else
{
if (formulaire.nom.value=="" )
{
alert("Veuillez remplir le champ Nom" );
document.formulaire.nom.focus();
return false;
}
else
{
if (formulaire.prenom.value=="" )
{
alert("Veuillez remplir le champ Prenom" );
document.formulaire.prenom.focus();
return false;
}
else
{
if (formulaire.photos.value=="" )
{
alert("Veuillez sélectionner votre fichier" );
return false;
}
else
{
return true
}
}
}
}
}

//-->
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head><body bgcolor="#99CCFF">
<form action="envoi.php" method="POST" enctype="multipart/form-data" name="formulaire" onSubmit="return verif(this.mail.value)">
<input type='hidden' name='dest' value='logicmaison@hotmail.com'>
<input type='hidden' name='formulaire' value='Formulaire envoye avec un fichier à Kapitolprod'>
<input type='hidden' name='titre' value="Formulaire de Kapitolprod">
<input type='hidden' name='sujet' value="Envoi de coordonnées">
<td><table width="100%" height="305" border="0" bordercolor="#FF0000">
<tr>
<td height="49" colspan="4"><p align="center"></p>
<p align="center"><font color="red"><strong><em><u>ENTREZ
VOS INFORMATIONS CI-DESSOUS:</u></em></strong></font></p>
</td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Nom :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input type="text" name="nom"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Prénom :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input type="text" name="prenom"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Email :</b> <font color="#FF0000">*</font></div></td>
<td colspan="2"><input name="mail" type="text" size="40"></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Vos photos :</b> <font color="#FF0000">*</font></div></td>
<td><input type=file name="photos" size="40" MAXLENGTH="80">
</td>
<td></td>
</tr>
<tr>
<td colspan="4"><div align="center"><font color="#FF0000">* <font color="#000000" size="1" face="Arial, Helvetica, sans-serif">A
completer pour envoyer !</font></font></div></td>
</tr>
<tr>
<td width="14%"><div align="center"> </div></td>
<td colspan="2"><hr></td>
<td width="12%"></td>
</tr>
<tr valign="bottom">
<td height="37" colspan="2"><div align="right"><b>Age :</b></div></td>
<td colspan="2"><b>18-25
<input type="radio" name="1" 1 value="18-25"> 25-35
<input type="radio" name="1" 2 value="25-35"> +35
<input type="radio" name="1" 3 value="+35"></b></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>Je suis :</b></div></td>
<td colspan="2"><b>amateur :
<input type="radio" name="2" 1 value="amateur">semi-professionnel :
<input type="radio" name="2" 2 value="semi-professionnel"></b></td>
</tr>
<tr>
<td colspan="2"><div align="right"><b>
J'accepte des scènes </b>( <A onclick="window.open('note.html','Info','resizable=no, toolbar=no, location=no, status=no, menubar=no, width=750, height=300');return(false)"
href="note.html"><b>note</b></A><b> ) :</b></div></td>
<td colspan="2"><b>solo :
<input type="radio" name="3" 1 value="solo">avec 1 partenaire :
<input type="radio" name="3" 2 value="avec 1 partenaire"> groupe :
<input type="radio" name="3" 3 value="groupe"></b></td>
</tr>
<tr>
<td width="14%"><div align="center"> </div></td>
<td colspan="2"><hr></td>
<td width="12%"></td>
</tr>
<tr valign="middle">
<td height="50" colspan="4"> <div align="center">
<input type="reset" name="Submit2" value="Effacer">
<input type="submit" name="Submit" value="Envoyer">
</div></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>



et mon fichier envoi.php

Code :

<body bgcolor="#99CCFF">
<div align="center">
<p> </p>
<p> </p>
<table width="41%" height="140" border="1">
<tr>
<td><div align="center">
<p><b>VOS INFORMATIONS <br>
<br>
ONT BIEN ETE ENVOYEES.</b> </p>
<p><b>Merci.</b></p>
</div></td>
</tr>
</table>
</div>
<div align= center>
<p><INPUT TYPE=button NAME=Bouton VALUE=" Retour "
onclick="document.location.href='http://kapitolprod.maisonx.com/page1html'">
</p></div>
<?

$name_file = $_FILES['photos']['name'];
$source=$_FILES['photos']['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;
}

if($_POST['dest']!="" )
{
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";

$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

$msg .= "--$boundary\r\n";

$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= $_POST['formulaire'];
$msg .= "\r\n";
$msg .= "\r\n";
$msg .= Nom__.$_POST['nom'];
$msg .= "\r\n";
$msg .= Prenom__.$_POST['prenom'];
$msg .= "\r\n";
$msg .= Mail__.$_POST['mail'];
$msg .= "\r\n";
$msg .= Age__.$_POST['1'];
$msg .= "\r\n";
$msg .= Je_suis__.$_POST['2'];
$msg .= "\r\n";
$msg .= Accepte_les_scènes__.$_POST['3'];
$msg .= "\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 = $_POST['dest'];
$expediteur = $_POST['titre'];

mail($destinataire, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

}

if($name_file!="" )
{
unlink($name_file);
}

?>


Simplement un message après l'envoi:
"nullmailer-inject: Invalid header line: Reply-To: Unable to parse the addresses."
Mais essaye donc toi :
mon formulaire

Répondre à kid75

Cette fois ci ton javascript marche ^^ c'est deja une amelioration. ( je sais pas si t'as changé qqchose: p ou si c t pas mi la dernier fois )

> pour le reste ^^ a pas vraiment envie de tout lire dans les détails :p
j'ai pas vu de fautes particulieres mais bon :p ( manque de motivation la :p )

Répondre à Resurectin

mdr, ca me rappel mes début PHP, des codes non structuré et tout lol

Je vais jeter un coup d'oeil sur ton script, pour voir si je peut t'aider à comprendre pourquoi ca ne marche pas (compte pas sur moi pour te sortir du code tout fait hein :-D c'est pas mon genre).

Amicalement

Répondre à Cool@IDN

Citation :

mail($destinataire, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);



Tu fait appel à 2 variables pour le "reply-to" et pour l'expediteur (qui dans ton cas, sont surement la même adresse). Mais ni $reponse ni $expediteur n'ont de valeur. Il faut que ces 2 variables aient une valeur. Ce code juste au dessus de la fonction mail pourrait coriger le problème :

$reponse = "ton@e.mail";
$expediteur = "Votre site preferé <ton@e.mail>";


Sinon l'envoi de l'image en fichier joint ne me semble pas avoir d'erreur.

Amicalement

Répondre à Cool@IDN

tu penses que c'est mieux là:
mail($kapitolprod@netcourrier.com, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $kapitolprod@netcourrier.com\r\n".$header);

Qu'en penses-tu?

Mais j'ai pas oublié une extension JPEG,du style:

if($extension=="jpeg" )
{
$type2="image/jpeg";

Répondre à kid75

mail($kapitolprod@netcourrier.com, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $kapitolprod@netcourrier.com\r\n".$header);

Hum, non je ne pense pas que se soit mieu, là c truffé d'erreur ! Regarde :
$kapitolprod@netcourrier.com ne sera pas consideré comme une adresse "kapitolprod@netcourrier.com" mais tu aura un retour du style "@netcourrier.com".
Tout simplement parcque la variable $kapitolprod n'existe pas, donc elle retourne rien.

Je te conseille cette syntaxe suivante :

Citation :

$destinataire = $_POST['dest']; // l'email du client
$expediteur = "kapitolprod@netcourrier.com"; // ton email
mail($destinataire, $_POST['sujet'], $msg,
"Reply-to: ".$expediteur."\r\nFrom: ".$expediteur."\r\n".$header);



Pour les extention "jpeg", je n'ai pas regardé avec précision cette parti du code mais il me semble que la syntaxe de verification ne soit pas la meilleur.

En esperant t'avoir aidé,
Amicalement

Répondre à Cool@IDN

ok,je te remercie donc en fait je supprime:

Citation :

mail($destinataire, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header)



ou c'est pas utile?

Répondre à kid75

Non, tu ne supprime rien ;o)
Tu ajoute juste ces 2 ligne au dessus de la fonction "mail()" :

Citation :

$destinataire = $_POST['dest']; // l'email du client
$expediteur = "kapitolprod@netcourrier.com"; // ton email



et tu change la variable "$reponse" par "$expediteur" dans la fonction "mail()"

Amicalement

Répondre à Cool@IDN

Salut,
Bon au final cela me donne cela:

$destinataire = $_POST['dest'];
$expediteur = "kapitolprod@netcourrier.com";
$reponse = $expediteur;
mail($_POST['destinataire'], $_POST['sujet'], $msg, "Reply-to: {$_POST['reponse']}\r\nFrom: {$_POST['expediteur']}\r\n".$header);



@+

Répondre à kid75
Tom's Guide > Forum > Programmation > Envoi d'email avec piece jointe
Aller à :

Il y a 488 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens