IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] formmail


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut [Mail] formmail
    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

  2. #2
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    repondez moi au moins par un truc! n'importe lequel c 'est super urgent svp

  3. #3
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut Re: formmail
    Citation Envoyé par curci
    je suis nouveau ici!
    Ca se voit, car tu n'a pas lu la charte apparement.

    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");

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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

  5. #5
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    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

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    je l'ai fait mais ça n'a rien donné! est ce que je dois specifier le port aussi?

  7. #7
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    non pas besoin du port normalement
    tu es chez quel hébergeur ?
    tu as relancer apache sur easy php ?

  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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?

  9. #9
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    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 ?

  10. #10
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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!!!

  11. #11
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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??

  12. #12
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Je pense que c'est plutot name que upload_name:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $NomFichier = $_FILES['NomFichier']['name'];

  13. #13
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    parceque j'ai creé un repertoire dans ma racine avec le nom upload ... mais bon je vais essayé la tienne et on verra

  14. #14
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    Non! ça me retourne le message suivant pour le fichier joint:

    Class Mail, method attach : file ../upload/test.txt can't be found

  15. #15
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    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.

  16. #16
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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-&gt;Attach("../upload/$name","application/octet-stream");*/
    }
    $m->Send();
    /*$m-&gt;Send();*/

    if ("$NomFichier"!="") {
    Unlink("../upload/$NomFichier");
    }

    echo "$reponse";

    ?>

  17. #17
    Membre éprouvé Avatar de ciesco
    Inscrit en
    Février 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 110
    Par défaut
    Ah oui?

  18. #18
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    je vois pas où est le probleme!!

  19. #19
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Bon, pour ce qui est de ton problème, il y en plein en fait...
    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");
    }
    Et je n'ai que regardé cette partie.

  20. #20
    Membre averti
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    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'];

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Mail] Ajout d'un lien dans un scipt formmail.php
    Par PaulK dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2007, 22h59
  2. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28
  3. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22
  4. Scanner des mails et récupérer le fichier attaché
    Par delphim dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/04/2003, 09h35
  5. [VB6] [Outlook] Imprimer un mail en VB
    Par der dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/09/2002, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo