formulaire mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formulaire mail

Re: formulaire mail

par sakul » 29 nov. 2011, 13:31

et un truc con mais mail retour bien "true" ? (enfin c'est déja demandé par mazarini ça)
pour ca je sais pas comment faire, car le php et moi ca fait 3 mais si vous avez un tuto sous la main je le lirai.

pour le niveau d'erreur je ne sais pas si je peux le changer, je suis dans un environnement mutualisé. pas d'accès au fichiers de config du serveur.

et j'ai testé avec le phpmailer ca donne ca :
Current PHP version: 5.3.8
Warning: require_once(../class.html2text.inc.php): failed to open stream: No such file or directory in /data/henry2/web/f/a/sakul-trip.toile-libre.org/htdocs/PHPMailer_5.2.0/test_script/index.php on line 107 Fatal error: require_once(): Failed opening required '../class.html2text.inc.php' (include_path='.:/usr/local/share/pear') in /data/henry2/web/f/a/sakul-trip.toile-libre.org/htdocs/PHPMailer_5.2.0/test_script/index.php on line 107
:shock:

Re: formulaire mail

par moogli » 29 nov. 2011, 12:34

et un truc con mais mail retour bien "true" ? (enfin c'est déja demandé par mazarini ça)

la doc de php indique clairement que cette fonction n'est pas prévu pour l'envoie de mail de masse hors elle est utilisée dans une boucle ^^

a tu essayé un classe comme PHPMailer ? http://code.google.com/a/apache-extras. ... loads/list

est ce que ton niveau d'erreur est bien E_ALL | E_STRICT ? (voir error_reporting)

@+

Re: formulaire mail

par sakul » 29 nov. 2011, 12:19

merci pour l'effort, mais je pense que ce fichier.php est un peu trop compliqué pour mon niveau de toute facon.
du coup j'ai essayé avec un autre, plus simpliste mais censé fonctionner vu qu'il a été posté par un admin sur le forum de mon herbergeur.

Et bien ca ne fonctionne pas non plus. et rien n'arrive dans mon spam.
<?php

$TO = "[email protected]";



$h  = "From: " . $TO;



$message = "";



while (list($key, $val) = each($HTTP_POST_VARS)) {

  $message .= "$key : $val\n";

}



mail($TO, $subject, $message, $h);



Header("Location: http://www.sakul-trip.toile-libre.org");



?>
je vais essayer de faire marcher celui la deja, on verra pour la suite.

Re: formulaire mail

par Mazarini » 29 nov. 2011, 10:45

        for( $i=0; $i< sizeof($this->sendto); $i++ ) {

                $res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);

                // TODO : trmt res

        }
Ajoute un echo pour voir les valeurs des paramètres (en particulier $this->sendto[$i])
Ajoute un message selon que $res est vrai ou faux.
Vérifie que le mail n'arrive pas dans les spam

Re: formulaire mail

par sakul » 29 nov. 2011, 10:04

up

Re: formulaire mail

par sakul » 26 nov. 2011, 17:27

ok merci pour les précision.

j'ai bien lu le topic que tu m'a indiquer.

concernant ce php.ini, je n'en trouve pas sur l'espace qui m'est alloué chez mon hebergeur; je ne peux donc pas le modifier.
Je pense qu'on peut alors supposer qu'il est plus haut dans l'arborescence ( et donc geré par les admin de toile libre). A ce compte il doit etre bien configuré.

je ne sais pas trop ce que je peux faire.

Re: formulaire mail

par Ryle » 26 nov. 2011, 16:14

En fait la fonction mail de php se contente d'appeler un serveur smtp qui va réaliser l'envoi du mail (tout comme mysql_query appel mysql pour qu'il exécute une requête). Il faut donc que celui-ci soit correctement configuré pour que l'envoi du mail puisse aboutir :)

Voir ce topic également : ici

Re: formulaire mail

par sakul » 25 nov. 2011, 20:10

salut,

noormalement la fonction mail est ok. je suis hebergé par toile-libre.

les tests sont fait online et non en local.

et pour la partie smtp, je pense maintenant que le problème vien de la dans la mesure ou je n'ai pas pris cela en compte.
ai-je obligatoirement besoin d'un serveur smtp ? si oui comment vérifier s'il n'est pas deja en place ?

je pensais (surement a tort) que la fonction mail ne nessecitait pas cela. merci de m'eclairer sur ce point.

Re: formulaire mail

par Aureusms » 25 nov. 2011, 18:51

Ton smtp est-il correct ?
Est ce que ta fonction mail () n'est pas bloquée par ton hébergeur ?
Travaille tu chez un hébergeur ou tests tu en local ?

formulaire mail

par sakul » 25 nov. 2011, 18:20

bonjour à tous

désoler de vous embêter avec un enieme formulaire mail mais je n'y arrive vraiment pas.
j'ai une page html qui appelle un fichier php. Quand je teste l'envoi d'un mail, je me retrouve bien sur la page de remerciement. Ce qui me fait penser que tout est ok, mais je ne recoit pas le mail.

n'étant pas une lumiere en php je ne trouve pas d'ou vient le probleme.
y aurait il une ame charitable pour m'aider ?
il est evident que le mail indiqué dans le fichier php a été changé pour ce post. :roll:
merci d'avance


page html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <meta http-equiv="content-type" content="text/html; charset=utf-8" />

        <title>Sakul-trip</title>

        <meta name="keywords" content="" />

        <meta name="description" content="" />

        <link href="styles.css" rel="stylesheet" type="text/css" media="screen" />

    </head>

    <body>

  <div id="bg_top">

        	<div id="wrap_bg">

        		<div id="wrap">

	        		<div id="header">

	        			<div id="menu">

							<ul>

								<li class="but1_menu"><a href="index.html">Home</a></li>

								<li class="but2_menu"><a href="blog.html">Maps</a></li>

								<li class="but3_menu"><a href="galery.html">Gallery</a></li>

								<li class="but4_menu"><a href="contact.html" class="active">Contact</a></li>

							</ul>

						</div>

						<div id="logo">

							<h1 class="strong">Sakul-trip</h1>

	                	</div>

	        		</div>

					<div id="content">

						<div id="left_column">

							<!-- Start left news box -->

							<div class="left_news_box">

								<div class="left_news_top"></div>

								<div class="left_news_bg">

									<div class="text">

										<h2>Contact me</h2>

										<div id="contact_form">

				                            <form id="form2" vname="FormName" action="formmail.php" method="post" enctype="multipart/form-data" name="form">

				                                <fieldset>

				                                    <p>Name</p>

				                                    <td><input id="con_name" type="text" name="con_name" value="" alt=""/></td><br />

				                                    <p>Email</p>

				                                    <td><input id="con_email" type="text" name="con_email" value="" alt=""/></td><br />

				                                    <p>Subject</p>

				                                    <td><input id="con_website" type="text" name="con_website" value="" alt=""/></td><br />

				                                    <p>Message</p>

				                                    <td><textarea id="con_mess" name="con_mess" cols="0" rows="0"></textarea></td><br />

				                                    <p>Join file</p>

				                                    <td><input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="NomFichier" type="file" size="16"></td><br />

				                                    <td>Priority:</td>

				                                    <div align="left">

														<select name="priority" size="1">

															<option value="1">Urgent

															<option value="2">Medium

															<option value="3">Low

															</select> <input style="float: right; padding: 0px 10px 5px 5px;" type="submit" value="submit">

													</div>

				                                    </fieldset>

				                            </form>

				                        </div>

									</div>

									<div class="clear"></div>

								</div>

								<div class="left_news_bot"></div>

							</div>

							<!-- End left news box -->

						</div>

						<div id="right_column">

							<!-- Start right news box -->

							<div class="right_news_box">

								<div class="right_news_top"></div>

								<div class="right_news_bg">

									<div class="text">

										<p><img src="images/moi.png" align="center" border="4"></p>

										<div class="clear"></div>

									</div>

								</div>

								<div class="right_news_bot"></div>

							</div>

							<!-- End right news box -->			

						</div>

						<div class="clear"></div>

					</div>

					

					<div id="footer">

						<div id="footer_bg_top"></div>

						<div id="footer_bg">

							<div id="footer_top_text">

							<p class="center"><img src="images/foot.png" border="4"></p>

							</div>

							<div id="footer_bottom_text">

								<p><!-- Do not remove -->Designed by <a href="http://www.metamorphozis.com/free_templates/free_templates.php" title="Free Web Templates">Free Web Templates</a>, coded by <a href="http://www.myfreecsstemplates.com/" title="Free CSS Templates">Free CSS Templates</a><!-- end --></p>

							</div>

						</div>

						<div id="footer_bg_bot"></div>

					</div>

					

				</div>

        	</div>

        </div>

    </body>

</html>
et mon fichier php
<?

/* PARAMETRAGE DU SCRIPT */

/* ENTREZ VOTRE ADRESSE EMAIL ENTRE LES GUILLEMETS*/



$dest="[email protected]";



$reponse=StripSlashes("Thanks for your mail.");



/* 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 ([email protected])

 *                $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|fr)\$",$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";



?>