script php qui permet d'envoie une pièce jointe vers email
13 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
-

mahdivitche - WRInaute passionné

- Messages: 902
- Inscription: Dim Jan 06, 2008 0:33
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 passionné

- Messages: 902
- Inscription: Dim Jan 06, 2008 0:33
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: 5220
- Inscription: Mer Nov 23, 2005 10:38
La solution serait de passer à une vraie classe d'envoi d'email, comme PHPMailer.
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 passionné

- Messages: 902
- Inscription: Dim Jan 06, 2008 0:33
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: 5220
- Inscription: Mer Nov 23, 2005 10:38
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/
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: 5220
- Inscription: Mer Nov 23, 2005 10:38
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 passionné

- Messages: 939
- Inscription: Lun Jan 14, 2008 12:14
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>
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: 5220
- Inscription: Mer Nov 23, 2005 10:38
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
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Mise à jour des services Postini
- Les albums web Picasa passent à 1 Go de stockage
- Yahoo poursuit les propriétaires de 1763 noms de domaine
- Google écrit parfois au webmaster en cas de blacklistage
- MyMaps : des cartes personnalisées avec Google Maps
- Photos satellite des incendies en Grèce dans Google Earth
- Ajouter un Gadget Google sur son site
- Résultats des élections présidentielles du 1er tour 2007
- Google Desktop pour Mac OS X
- Résultats des élections législatives du 1er tour 2007
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





le forum