FRIHOSTFORUMSSEARCHFAQTOSBLOGSCOMPETITIONS
You are invited to Log in or Register a free Frihost Account!


send an email from internet...





pollux1er
I took a script from the net, but there is something wrong..

This is the script :
The file form.html

Code:
<form vname="FormName" action="formmail.php" method="post" enctype="multipart/form-data" name="form">
<table border="0" cellpadding="5" cellspacing="0" width="137">
   <tr>
      <td>Exp&eacute;diteur:</td>
      <td><input type="text" name="email" size="35"></td>
   </tr>
   <tr>
      <td>Destinataire</td>
      <td><input type="text" name="dest" size="35"></td>
   </tr>
   <tr>
      <td>Sujet</td>
      <td><input type="text" name="subject" size="35"></td>
   </tr>
   <tr>
      <td>Message</td>
      <td><textarea rows="12" name="msg" cols="60"></textarea></td>
   </tr>
   <tr>
      <td>Fichier joint:</td>
      <td><input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="NomFichier" type="file" size="16"></td>
   </tr>
   <tr>
      <td>Priorit&eacute;:</td>
      <td>
         <div align="left">
            <select name="priority" size="1">
               <option value="1">Urgent
               <option value="2">Haute
               <option value="3">Moyenne
               <option value="4">Basse
               <option value="5">Tr&egrave;s basse
            </select> <input type="submit" value="Envoyer"></div>
      </td>
   </tr>
</table>
</form>



The file formail.php

Code:
<?
/* PARAMETRAGE DU SCRIPT */
/* ENTREZ VOTRE ADRESSE EMAIL ENTRE LES GUILLEMETS*/

$dest="lbresler@club-internet.fr";

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

?>


But ther is something wrong.
What?

If you can test it and tell me. Thanks
djclue917
Ok, I see... formmail.php uses the mail() function. However, for the Mail functions to be available, PHP must have access to the sendmail binary during compile time. It is possible that the PHP installed on Frihost's servers aren't built with sendmail support. It is also possible that sendmail support was enabled on compile-time but the sendmail binary itself isn't installed or is not found in PATH by PHP. Either case, unfortunately, you won't be able to use the mail() function to send an e-mail because the prerequisites were not met.

BTW, you might want to ask Bondings for help/more info about this. In my WordPress installation, e-mail sending is functional.
Diablosblizz
Let me get this straight: PHP sendmail function is enabled on frihost's server.

Well, is your email address lbresler@club-internet.fr? If it isn't, change it in the formail.php. Also, I'm not sure if you mistyped the formail.php name, but if you didn't then in the form the action is set to go to formmail.php. (double M) After checking those, if it still doesn't work then please Private Message me. I will code a sendmail feature for you. It's simple, so it won't take long.

Though, I need some information:

1. The forms you would like. Example: name, address, password, ect.
2. If the email is going inbound, example: to your email address.
3. If number 2 is true, then I need your email address.

I hope this helps.
jabapyth
If you say "it doesnt work", thats not really helpful to us would-be saviors. How does it not work? Are there any errors? (if you dont know, enable error reporting)
pollux1er
Diablosblizz wrote:
Let me get this straight: PHP sendmail function is enabled on frihost's server.

Well, is your email address lbresler@club-internet.fr? If it isn't, change it in the formail.php. Also, I'm not sure if you mistyped the formail.php name, but if you didn't then in the form the action is set to go to formmail.php. (double M) After checking those, if it still doesn't work then please Private Message me. I will code a sendmail feature for you. It's simple, so it won't take long.

Though, I need some information:

1. The forms you would like. Example: name, address, password, ect.
2. If the email is going inbound, example: to your email address.
3. If number 2 is true, then I need your email address.

I hope this helps.


lbresler@club-internet.fr is just an email for the example which is supposed to be mine.

1. The forms i would like is name, address, message.
2. The email is going to my email address.
3. my email adress is pollux1er@gmail.com
mahirharoon
anybody with common sense could make a mailer script with mail()
Diablosblizz
Quote:
1. The forms i would like is name, address, message.


By address you mean email address or street address?
pollux1er
Diablosblizz wrote:
Quote:
1. The forms i would like is name, address, message.


By address you mean email address or street address?


By address, i mean the email address and not the other one... Crying or Very sad
pollux1er
mahirharoon wrote:
anybody with common sense could make a mailer script with mail()

Just post us one that works properly. It's very easy to say what you do and stay quiet after... Crying or Very sad
simplyw00x
Dear christ man, pastebin! As suggested, there's a spelling error in your form. Also, please post the error messages you get when running this.
mahirharoon
pollux1er wrote:
mahirharoon wrote:
anybody with common sense could make a mailer script with mail()

Just post us one that works properly. It's very easy to say what you do and stay quiet after... Crying or Very sad

tada!
catch it!
Arrow index.phtml
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

</head>
<body>

<form action="process.php" method="get">
from email: <input name="to" type="text">
subject: <input name="subject" type="text">
  <div> message: </div>

  <div> <textarea name="message" rows="20" cols="40">type in </textarea></div>

  <input type="submit">
</form>

</body>
</html>

Arrow process.php
Code:

<?php
//settings
//from
$to      = /*replace whith email*/;
//subject
$subject = '$_GET["subject"]';
//what to email
$message = '$_GET["message"]';
//header configuration
$headers = 'From: $_GET["from"]' . "\r\n" .
    'Reply-To:  $to' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

 //performing the action

mail($to, $subject, $message, $headers);
?>

see - i have common sense - see Cool
hahahaha Laughing
Arno v. Lumig
mahirharoon, should work, but it is not safe! Someone could modify the email headers by filling in bad data in "from"

But you're right that it's not that hard to make a working email script.
mahirharoon
Arno v. Lumig wrote:
mahirharoon, should work, but it is not safe! Someone could modify the email headers by filling in bad data in "from"

But you're right that it's not that hard to make a working email script.

yes,that is the risk
that is the second reason why the hosts do not allow mail()
(the first reason is - it needs multiple vitrual servers on 1 server which is so hard to make it ready)
Diablosblizz
mahirharoon wrote:
Arno v. Lumig wrote:
mahirharoon, should work, but it is not safe! Someone could modify the email headers by filling in bad data in "from"

But you're right that it's not that hard to make a working email script.

yes,that is the risk
that is the second reason why the hosts do not allow mail()
(the first reason is - it needs multiple vitrual servers on 1 server which is so hard to make it ready)


That is why you do not use headers. Because your code is so simple to hack, and because I have time, here is something that WILL work and is secure, or so I think.



form.html:
Code:
<html>
<head><title>Contact</title>
</head>
<body>
<form action='process.php' method='post'>
Name: <input type='text' name='name' size='32'><br>
E-Mail Address: <input type='text' name='email' size='32' maxlength='50'><br>
Message:<br><textarea name='message'>Enter your message here!</textarea><br>
<input type='submit' value='Send!'>
</form>
</body>
</html>


formmail.php:
Code:
<?php
/* Define all the variables below */
$user = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
/* Finished defining the variables */
      if(!$user || !$email || !$message) { // if anything is missing, then..
         if(!$user) { // if name is missing
            echo "Please enter in your name.";
         }
         if(!$email) { // if email is missing
            echo "Plase enter in your email address.";
         }
         if(!$message) { // if message is missing
            echo "Please enter a message in the box.";
         } // if any of the above, show the form once again
      echo "<BR><BR><form action='process.php' method='post'>
Name: <input type='text' name='name' size='32'><br>
E-Mail Address: <input type='text' name='email' size='32' maxlength='50'><br>
Message:<br><textarea name='message'>Enter your message here!</textarea><br>
<input type='submit' value='Send!'>
</form>";
      } else { // everything looks okay, continue!
         $userc = htmlspecialchars(stripslashes($user)); // sort of makes it secure
         $emailc = stripslashes($email); // sort of makes it secure
         $messagec = htmlspecialchars(stripslashes($message)); // sort of makes it secure
         $messaget = "Dear Pollux1er, \n
         You have recieved a message from $userc($emailc). The message follows: \n
         $messagec \n
         Some information about the sender is:<BR>
         User: $userc<BR>
         Email: $emailc<BR>
         IP Address: $IP"; // change the "Dear Pollux1er" if you must. This is the message SENT to you
         
         mail("pollux1er@gmail.com", $message, "From: $userc($emailc)"); // send the email to the email you gave me
            if(mail) { // if..
               echo "The email has been sent!"; // the email sent to you! Congrats!
            } else {
               echo "There was a problem sending the email, please try again."; // oh no, there was a problem..
            } // close it
      } // close it
?>


Edit it if you want to. Come back if want support. HOPE THIS HELPS!
mahirharoon
Diablosblizz wrote:
mahirharoon wrote:
Arno v. Lumig wrote:
mahirharoon, should work, but it is not safe! Someone could modify the email headers by filling in bad data in "from"

But you're right that it's not that hard to make a working email script.

yes,that is the risk
that is the second reason why the hosts do not allow mail()
(the first reason is - it needs multiple vitrual servers on 1 server which is so hard to make it ready)


That is why you do not use headers. Because your code is so simple to hack, and because I have time, here is something that WILL work and is secure, or so I think.



form.html:
Code:
<html>
<head><title>Contact</title>
</head>
<body>
<form action='process.php' method='post'>
Name: <input type='text' name='name' size='32'><br>
E-Mail Address: <input type='text' name='email' size='32' maxlength='50'><br>
Message:<br><textarea name='message'>Enter your message here!</textarea><br>
<input type='submit' value='Send!'>
</form>
</body>
</html>


formmail.php:
Code:
<?php
/* Define all the variables below */
$user = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
/* Finished defining the variables */
      if(!$user || !$email || !$message) { // if anything is missing, then..
         if(!$user) { // if name is missing
            echo "Please enter in your name.";
         }
         if(!$email) { // if email is missing
            echo "Plase enter in your email address.";
         }
         if(!$message) { // if message is missing
            echo "Please enter a message in the box.";
         } // if any of the above, show the form once again
      echo "<BR><BR><form action='process.php' method='post'>
Name: <input type='text' name='name' size='32'><br>
E-Mail Address: <input type='text' name='email' size='32' maxlength='50'><br>
Message:<br><textarea name='message'>Enter your message here!</textarea><br>
<input type='submit' value='Send!'>
</form>";
      } else { // everything looks okay, continue!
         $userc = htmlspecialchars(stripslashes($user)); // sort of makes it secure
         $emailc = stripslashes($email); // sort of makes it secure
         $messagec = htmlspecialchars(stripslashes($message)); // sort of makes it secure
         $messaget = "Dear Pollux1er, \n
         You have recieved a message from $userc($emailc). The message follows: \n
         $messagec \n
         Some information about the sender is:<BR>
         User: $userc<BR>
         Email: $emailc<BR>
         IP Address: $IP"; // change the "Dear Pollux1er" if you must. This is the message SENT to you
         
         mail("pollux1er@gmail.com", $message, "From: $userc($emailc)"); // send the email to the email you gave me
            if(mail) { // if..
               echo "The email has been sent!"; // the email sent to you! Congrats!
            } else {
               echo "There was a problem sending the email, please try again."; // oh no, there was a problem..
            } // close it
      } // close it
?>


Edit it if you want to. Come back if want support. HOPE THIS HELPS!

i noticed you added ip but that is too dangerous like in places where the ex ip is same for whole country (eg-qatar) or when the hacker uses proxy (eg-curl)
then
Code:
echo "."; // oh no, there was a problem..
            } // close it
      } // close it

use
Code:
exit(There was a problem sending the email, please try again)
instead
next
Code:
if(!$user || !$email || !$message) {

i think it wont work
Code:
<input type='submit' value='Send!'>

remove the ! mark
and add name="submit"
Diablosblizz
You test it for me, and see that the code works. And it's a textbox, why wouldn't the ! work? You test it and you'll see that it will work.
mahirharoon
previous post^ wrote:
You test it for me, and see that the code works. And it's a textbox, why wouldn't the ! work? You test it and you'll see that it will work.

hahaha
server will recieve it as %21 some times
it should be

Quote:
<input type="submit">
Agent ME
The browser doesn't return the value of the submit button to the server afaik... You're fine having text on it.

Even if the browser does submit the ! as %21 to the server, does it make a difference? It isn't used in the code anywhere.
Diablosblizz
mahirharoon wrote:
previous post^ wrote:
You test it for me, and see that the code works. And it's a textbox, why wouldn't the ! work? You test it and you'll see that it will work.

hahaha
server will recieve it as %21 some times
it should be

Quote:
<input type="submit">


You are still able to change the value of the submit button. I don't understand why it won't work.
Johntheviper
Every time i have to send emails with PHP i use the class PHPMailer. In my opinion it is the easiest and fastest mail-class... And you don't have so much problems with spamfilters, because the class has methods to prevent from spamfilters, try it Smile
pollux1er
Let me get it please. Thanks
Flakky
It's difficult because of the SMTP settings but I'm trying to figure it out.
auditorgeneral
hello buddy, I need a web based php inbox mailer to reach out to my prospects. If anybody out there have one confirned php inbox mailer link, please send it to me. I'm in need of it urgently.
rvec
have you tried using google?
There are lots of mail forms out there Wink
manav
i know its kinda stupid suggestion but dude have u checked for the mails in the junk folder...

hey when the mails r being sent from domain names whose mailserver domain is not the same (or something like this) then many mail service providers treat the mails as junk

one example of the provider like this is yahoo.com
pollux1er
Normally my first script should work. I mada some research on that function and i found out that the true script to send mail is mail($ , $ , $ ) simply taken. And additionnal parameters like header can be added.

The difficulty with my script is that it is written oriented object. Thanks for those who participated to this post.
Related topics
[ java scripts ] email service
Main email
Email Errors Through Outlook Express
No mail sending on Outlook 2003
Email Certificates
neep help making email form that accepts html tags
Problems with the pop3 email
Unable to send email to *@msn.com addresses
Auto Email Service
Do kids think the same way as adults?
Unable to send email [Server 2 - DirectAdmin]
Unable to send email trough SMTP
Sending Email from localhost
email problem DirectAdmin Unable to send
Can't send email
Reply to topic    Frihost Forum Index -> Scripting -> Php and MySQL

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.