bonjour,
je suis nouveau ici! les garsd j'ai un probleme avec mon code pour envoyer un formulaire avec formmail il me met le message parse error sur cette ligne ; $m->Attach("../upload/$name","application/octet-stream");
je sais pas quoi faire![]()
bonjour,
je suis nouveau ici! les garsd j'ai un probleme avec mon code pour envoyer un formulaire avec formmail il me met le message parse error sur cette ligne ; $m->Attach("../upload/$name","application/octet-stream");
je sais pas quoi faire![]()
repondez moi au moins par un truc! n'importe lequel c 'est super urgent svp![]()
Ca se voit, car tu n'a pas lu la charte apparement.Envoyé par curci
Sinon pour ta réponse, essai plutot ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $m->Attach("../upload/$name","application/octet-stream");
merci apparement ça marche mais j'ai de nouveaux messages d'erreurs:
Notice: Undefined index: upload in c:\program files\easyphp1-8\www\***\formmail.php on line 14
qui est : $NomFichier = $_FILES['NomFichier']['upload_name'];
et
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\easyphp1-8\www\****\formmail.php on line 181
$res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);
pour la charte desolé je vais la lire tout de suite![]()
pour ton problème de mail, c'est parce que la fonction mail() utilise le serveur SMTP inscrit dans ton php.ini
visiblement tu tournes en local, et tu n'as pas de serveur mail d'installé sur ta machine.
dans le php.ini, cherche la ligne SMTP=
et écris le nom du serveur SMTP de ton fournisseur internet
exemple pour free : SMT=smtp.free.fr
je l'ai fait mais ça n'a rien donné! est ce que je dois specifier le port aussi?
non pas besoin du port normalement
tu es chez quel hébergeur ?
tu as relancer apache sur easy php ?
je suis chez menara.ma donc normalement c'est SMTP = smtp.menara.ma
. j'ai relancé l'apache mais ça n'a rien donné !
je dois configuré le sendmail_from aussi?
bah normalement sendmail_from tu mets ce que tu veux ça marche
je ne connais pas ton FAI ^^ je te parle bien de FAI, pas d'hébergeur, on est ok ?
je fais quoi danc ce cas? faut que je finis ce merdier site d'ici la fin du mois et cette fonction mail va me rendre dingue chaque jour un probleme qui apparait avec!!!![]()
enfin ça marche pour le fichier ini!!
mais j'ai un probleme encore au niveau des initiations des variables :
Notice: Undefined index: upload_name in c:\program files\easyphp1-8\www\****\formmail.php on line 14
$NomFichier = $_FILES['NomFichier']['upload_name'];
une solution svp??
Je pense que c'est plutot name que upload_name:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $NomFichier = $_FILES['NomFichier']['name'];
parceque j'ai creé un repertoire dans ma racine avec le nom upload ... mais bon je vais essayé la tienne et on verra
Non! ça me retourne le message suivant pour le fichier joint:
Class Mail, method attach : file ../upload/test.txt can't be found
Je ne sais pas quel info tu cherche. Apprement ca serait plutot le nom de fichier temporaire lors de ton upload dans ce cas, c'est ni name, ni upload_name mais tmp_name.
bon voila toute ma classe: je voudrais envoyer un mail avec 1 fichier joint c'est tout:
<?
/* PARAMETRAGE DU SCRIPT */
/* ENTREZ VOTRE ADRESSE EMAIL ENTRE LES GUILLEMETS*/
$dest="*****";
$reponse=StripSlashes("Message Envoyé");
$email = $_POST["email"];
$subject = $_POST["subject"];
$msg = $_POST["msg"];
$priority = $_POST["priority"];
$NomFichier = $_FILES['NomFichier']['upload_name'];
$NomFichier_name = $_FILES['NomFichier']['name'];
/* FIN DU PARAMETRAGE */
/*
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 ($email!="") {
$m->Cc( "$email");
}
$m->Priority($priority) ;
if ("$NomFichier"!="") {
$name = $HTTP_POST_FILES['NomFichier']['name'];
if (is_uploaded_file($NomFichier)) {
copy($NomFichier, "../upload/$name");
}
$m->Attach("../upload/$name","application/octet-stream");
/* $m->Attach("../upload/$name","application/octet-stream");*/
}
$m->Send();
/*$m->Send();*/
if ("$NomFichier"!="") {
Unlink("../upload/$NomFichier");
}
echo "$reponse";
?>
je vois pas où est le probleme!!![]()
Bon, pour ce qui est de ton problème, il y en plein en fait...
Et je n'ai que regardé cette partie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if ("$NomFichier"!="") { //<-- Pourquoi mettre une variable entre quotes $name = $HTTP_POST_FILES['NomFichier']['name']; //<-- ici c'est tmp_name if (is_uploaded_file($NomFichier)) { copy($NomFichier, "../upload/$name"); // <-- Dans le cas d'un fichier uploadé, on utilise move_uploaded_file } $m->Attach("../upload/$name","application/octet-stream"); }
le probleme c 'est que je l'email s'envoie mais sans piece jointe il me met l'erreur sur cette ligne :
$NomFichier = $_FILES['NomFichier']['upload_name'];
Partager