script php qui permet d'envoie une pièce jointe vers email
13 messages
• Page 1 sur 1
- mahdivitche
- WRInaute impliqué

- Messages: 967
- Inscription: 6 Jan 2008
script php qui permet d'envoie une pièce jointe vers email
Bonjour,
je cherche un script qui permet d'envoie une pièce jointe vers un email via un formulaire ?
(pièce jointe peut être n'importe fichier (txt.pdf.doc.gif.....)
j'ai touve un script mais pour suelement les fichier word
si vous pouvez me dépanner ça serait sympas.
merci d'avance
je cherche un script qui permet d'envoie une pièce jointe vers un email via un formulaire ?
(pièce jointe peut être n'importe fichier (txt.pdf.doc.gif.....)
j'ai touve un script mais pour suelement les fichier word
- Code: Tout sélectionner
include "libmail.php";//placez dans le repertoire courant donc...
$m= new Mail; // demarre l'email
$m->From( "contact@domaine.com" );// enlever les guillements pour placer une variable
$m->To( "contact@destinaire.com );//idem
$m->Subject( "Email avec attachement" );//idem
$message= "Veuillez trouver ci-joint votre test de francais";
$m->Body( $message); // corps du message
$m->Cc( "contact@autredomaine.com");//facultatif
$m->Bcc( "cache@autredomaine.com");//facultatif
$m->Priority(4) ; // Priorité Basse
$m->Attach( "./testfr.doc", "application/msword" ) ; // définition du type mime du document joint image/gif
$m->Send(); // mail envoyé
si vous pouvez me dépanner ça serait sympas.
merci d'avance
- mahdivitche
- WRInaute impliqué

- Messages: 967
- Inscription: 6 Jan 2008
seebz a écrit:$m->Attach( "./testfr.doc", "application/msword" ) ; // définition du type mime du document joint image/gif
si tu remplace cette ligne par le bon nom de fichier / type mime, tu as tu formulaire pour tout type de fichier
oui mais il faut tester le type de fichier
par exemple si un fichier word :
$m->Attach( "./testfr.doc", "application/msword" ) ;
si un fichier gif
$m->Attach( "./testfr.doc", "image/gif" ) ;
si un fichier pdf....
alors comment faire pour tester le type de fichier ?
et cmment definir tous les types ?
merci d'avance
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
La solution serait de passer à une vraie classe d'envoi d'email, comme PHPMailer.
- Hartas
- WRInaute discret

- Messages: 66
- Inscription: 12 Nov 2006
Salut,
tu devrais te pencher vers file_info et plus précisement : finfo_file : http://fr.php.net/manual/fr/function.finfo-file.php
si tu travailles qu'avec des images tu peux aussi utiliser getimagesize, qui pourra te retourner le type MIME. Attention pour des raisons de sécurité, il ne faut pas travailler uniquement sur les extensions.
tu devrais te pencher vers file_info et plus précisement : finfo_file : http://fr.php.net/manual/fr/function.finfo-file.php
si tu travailles qu'avec des images tu peux aussi utiliser getimagesize, qui pourra te retourner le type MIME. Attention pour des raisons de sécurité, il ne faut pas travailler uniquement sur les extensions.
- mahdivitche
- WRInaute impliqué

- Messages: 967
- Inscription: 6 Jan 2008
Merci
j'ai trouve un solution mais j'ai un petit probléme est que le fichier qu' arrive est vide (bidule.doc (0,0 Ko) )
Merci d'avance
j'ai trouve un solution mais j'ai un petit probléme est que le fichier qu' arrive est vide (bidule.doc (0,0 Ko) )
- Code: Tout sélectionner
<?
/* PARAMETRAGE DU SCRIPT */
/* ENTREZ VOTRE ADRESSE EMAIL ENTRE LES GUILLEMETS*/
$dest="monemail@hotmail.com";
$reponse=StripSlashes("Entrez ici la réponse quand une personne envoie le formulaire");
/* FIN DU PARAMETRAGE */
/*
Form Mail +
Loïc Bresler
Script permettant d'envoyer un mail grâce à un formulaire sur un site. Ce qu'il fait de plus que les autres
c'est qu'il gère la priorité du message, les copies et permet d'envoyer un fichier joint si l'hébergeur le permet
(en gros presque tous sauf Online et Nexen)
Le script utilise une version de la classe Mail() développée par Leo West (lwest.free.fr) et modifiée par mes soins.
DESCRIPTION
this class encapsulates the PHP mail() function.
implements CC, Bcc, Priority headers
*/
class Mail
{
var $sendto= array();
var $from, $msubject;
var $acc= array();
var $abcc= array();
var $aattach= array();
var $priorities= array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
// Mail contructor
function Mail()
{
$this->autoCheck( true );
}
/* autoCheck( $boolean )
* activate or desactivate the email addresses validator
* ex: autoCheck( true ) turn the validator on
* by default autoCheck feature is on
*/
function autoCheck( $bool )
{
if( $bool )
$this->checkAddress = true;
else
$this->checkAddress = false;
}
/* Subject( $subject )
* define the subject line of the email
* $subject: any valid mono-line string
*/
function Subject( $subject )
{
$this->msubject = strtr( $subject, "\r\n" , " " );
}
/* From( $from )
* set the sender of the mail
* $from should be an email address
*/
function From( $from )
{
if( ! is_string($from) ) {
echo "Class Mail: error, From is not a string";
exit;
}
$this->from= $from;
}
/* To( $to )
* set the To ( recipient )
* $to : email address, accept both a single address or an array of addresses
*/
function To( $to )
{
// TODO : test validité sur to
if( is_array( $to ) )
$this->sendto= $to;
else
$this->sendto[] = $to;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->sendto );
}
/* Cc()
* set the CC headers ( carbon copy )
* $cc : email address(es), accept both array and string
*/
function Cc( $cc )
{
if( is_array($cc) )
$this->acc= $cc;
else
$this->acc[]= $cc;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->acc );
}
/* Bcc()
* set the Bcc headers ( blank carbon copy ).
* $bcc : email address(es), accept both array and string
*/
function Bcc( $bcc )
{
if( is_array($bcc) ) {
$this->abcc = $bcc;
} else {
$this->abcc[]= $bcc;
}
if( $this->checkAddress == true )
$this->CheckAdresses( $this->abcc );
}
/* Body()
* set the body of the mail ( message )
*/
function Body( $body )
{
$this->body= $body;
}
/* Send()
* fornat and send the mail
*/
function Send()
{
// build the headers
$this->_build_headers();
// include attached files
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$body = $this->fullBody . $this->attachment;
}
// envoie du mail aux destinataires principal
for( $i=0; $i< sizeof($this->sendto); $i++ ) {
$res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);
// TODO : trmt res
}
}
/* Organization( $org )
* set the Organisation header
*/
function Organization( $org )
{
if( trim( $org != "" ) )
$this->organization= $org;
}
/* Priority( $priority )
* set the mail priority
* $priority : integer taken between 1 (highest) and 5 ( lowest )
* ex: $m->Priority(1) ; => Highest
*/
function Priority( $priority )
{
if( ! intval( $priority ) )
return false;
if( ! isset( $this->priorities[$priority-1]) )
return false;
$this->priority= $this->priorities[$priority-1];
return true;
}
/* Attach( $filename, $filetype )
* attach a file to the mail
* $filename : path of the file to attach
* $filetype : MIME-type of the file. default to 'application/x-unknown-content-type'
* $disposition : instruct the Mailclient to display the file if possible ("inline") or always as a link ("attachment")
* possible values are "inline", "attachment"
*/
function Attach( $filename, $filetype='application/x-unknown-content-type', $disposition = "inline" )
{
// TODO : si filetype="", alors chercher dans un tablo de MT connus / extension du fichier
$this->aattach[] = $filename;
$this->actype[] = $filetype;
$this->adispo[] = $disposition;
}
/* Get()
* return the whole e-mail , headers + message
* can be used for displaying the message in plain text or logging it
*/
function Get()
{
$this->_build_headers();
if( sizeof( $this->aattach > 0 ) ) {
$this->_build_attachement();
$this->body= $this->body . $this->attachment;
}
$mail = $this->headers;
$mail .= "\n$this->body";
return $mail;
}
/* ValidEmail( $email )
* return true if email adress is ok - regex from Manuel Lemos (mlemos@acm.org)
* $address : email address to check
*/
function ValidEmail($address)
{
if( ereg( ".*<(.+)>", $address, $regs ) ) {
$address = $regs[1];
}
if(ereg( "^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$address) )
return true;
else
return false;
}
/* CheckAdresses()
* check validity of email addresses
* if unvalid, output an error message and exit, this may be customized
* $aad : array of emails addresses
*/
function CheckAdresses( $aad )
{
for($i=0;$i< sizeof( $aad); $i++ ) {
if( ! $this->ValidEmail( $aad[$i]) ) {
echo "Class Mail, method Mail : invalid address $aad[$i]";
exit;
}
}
}
/********************** PRIVATE METHODS BELOW **********************************/
/* _build_headers()
* [INTERNAL] build the mail headers
*/
function _build_headers()
{
// creation du header mail
$this->headers= "From: $this->from\n";
$this->to= implode( ", ", $this->sendto );
if( count($this->acc) > 0 ) {
$this->cc= implode( ", ", $this->acc );
$this->headers .= "CC: $this->cc\n";
}
if( count($this->abcc) > 0 ) {
$this->bcc= implode( ", ", $this->abcc );
$this->headers .= "BCC: $this->bcc\n";
}
if( $this->organization != "" )
$this->headers .= "Organization: $this->organization\n";
if( $this->priority != "" )
$this->headers .= "X-Priority: $this->priority\n";
}
/*
* _build_attachement()
* internal use only - check and encode attach file(s)
*/
function _build_attachement()
{
$this->boundary= "------------" . md5( uniqid("myboundary") ); // TODO : variable bound
$this->headers .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n\n";
$this->fullBody = "This is a multi-part message in MIME format.\n--$this->boundary\nContent-Type: text/plain; charset=us-ascii\nContent-Transfer-Encoding: 7bit\n\n" . $this->body ."\n";
$sep= chr(13) . chr(10);
$ata= array();
$k=0;
// for each attached file, do...
for( $i=0; $i < sizeof( $this->aattach); $i++ ) {
$filename = $this->aattach[$i];
$basename = basename($filename);
$ctype = $this->actype[$i]; // content-type
$disposition = $this->adispo[$i];
if( ! file_exists( $filename) ) {
echo "Class Mail, method attach : file $filename can't be found"; exit;
}
$subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$basename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n filename=\"$basename\"\n";
$ata[$k++] = $subhdr;
// non encoded line length
$linesz= filesize( $filename)+1;
$fp= fopen( $filename, 'r' );
$data= base64_encode(fread( $fp, $linesz));
fclose($fp);
$ata[$k++] = chunk_split( $data );
/*
// OLD version - used in php < 3.0.6 - replaced by chunk_split()
$deb=0; $len=76; $data_len= strlen($data);
do {
$ata[$k++]= substr($data,$deb,$len);
$deb += $len;
} while($deb < $data_len );
*/
}
$this->attachment= implode($sep, $ata);
}
} // class Mail
$subject=StripSlashes($subject);
$msg=StripSlashes($msg);
$msg="Message depuis votre site web:
$msg";
$m= new Mail; // create the mail
$m->From( "$email" );
$m->To( "$dest");
$m->Subject( "$subject" );
$m->Body( $msg); // set the body
if ($email1!="") {
$m->Cc( "$email1");
}
$m->Priority($priority) ;
if ("$NomFichier_name"!="") {
copy("$NomFichier","../upload/$NomFichier_name");
$m->Attach( "../upload/$NomFichier_name", "application/octet-stream" );
}
$m->Send();
if ("$NomFichier_name"!="") {
Unlink("../upload/$NomFichier_name"); }
echo "$reponse";
?>
Merci d'avance
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Je te conseille sincèrement de te tourner vers PhpMailer, qui gère vraiment très bien et de manière facile à utiliser l'envoi de mail (avec PJ ou non, en HTML, etc). Là tu pars d'un script qui date de 2004, et que plus grand monde ne doit utiliser. Envoyer un mail avec PJ en utilisant PHPMailer, c'est 4-5 lignes de codes (après inclusion de la classe).
http://phpmailer.codeworxtech.com/
http://phpmailer.codeworxtech.com/
- hakimsoft
- Nouveau WRInaute

- Messages: 2
- Inscription: 11 Juin 2009
Re: script php qui permet d'envoie une pièce jointe vers email
salut je cherche une formmail php mon formmail ça marche pas voila script
merci ....
- Code: Tout sélectionner
<?php
$TO = "megasoft.maroc@gmail.com";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://jolair.ma/sm1/merci.html");
?>
merci ....
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: script php qui permet d'envoie une pièce jointe vers email
Lis les posts du dessus. Il existe une classe PHP super simple d'utilisation pour envoyer un mail : PHPMailer.
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
Re: script php qui permet d'envoie une pièce jointe vers email
<aveugle numéro 5>
UsagiYojimbo, tu ne connaîtrais pas une classe pour envoyer des mails ?
</aveugle>
UsagiYojimbo, tu ne connaîtrais pas une classe pour envoyer des mails ?
</aveugle>
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: script php qui permet d'envoie une pièce jointe vers email
PHPMailer ou plus récent (plus performant d'après ce que j'ai pu lire): http://swiftmailer.org/
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: script php qui permet d'envoie une pièce jointe vers email
On va finir par croire que je suis le développeur de PHPMailer, mais je n'en suis qu'un utilisateur pour le moins satisfait.
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [resolu] envoie d'une piece jointe en php
- file_get_contents(), envoie mail() avec pièce jointe php
- Problème avec PHP: envoyer email avec pièce jointe PDF
- formulaire envoi de piece jointe php
- Mail + pièce jointe PDF généré en PHP
- Un formulaire en PHP avec pièce jointe: sécurité!
- [php] envoyer un mail avec une pièce jointe
- envoie 25,000 email par php
- formulaire avec piéce jointe
- Gmail : pièce jointe *.exe
Consultez la description détaillée des produits ou services de Google suivants : Hello
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


