TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   Absolute Beginners (http://www.talkphp.com/absolute-beginners/)
-   -   email with attachments (http://www.talkphp.com/absolute-beginners/3650-email-attachments.html)

hhstables 11-24-2008 11:56 PM

email with attachments
 
I got this work with my server however I need this to work with smtp mail what change do I need to make?

php Code:
if ($_SERVER['REQUEST_METHOD']=="POST"){

   // we'll begin by assigning the To address and message subject
   $to = "hhstables@hhstables.com";
   $from = "Info Curb Your Pouch <info@docsidehealthiesthound.com>";
   $subject = "Application Curb Your Pouch";
   
     // get the sender's name and email address
   // we'll just plug them a variable to be used later
  $Name = stripslashes($_POST["Name"]);
  $Address = stripslashes($_POST["Address"]);
  $City = stripslashes($_POST["City"]);
  $State = stripslashes($_POST["State"]);
  $Zip = stripslashes($_POST["Zip"]);
  $Phone = stripslashes($_POST["Phone"]);
  $Cell = stripslashes($_POST["Cell"]);
  $Fax = stripslashes($_POST["Fax"]);
  $Email = stripslashes($_POST["Email"]);

  $DogsName = stripslashes($_POST["DogsName"]);
  $DogsAge = stripslashes($_POST["DogsAge"]);
  $Breed = stripslashes($_POST["Breed"]);
  $DogsWeight = stripslashes($_POST["DogsWeight"]);
  $DogsSex = stripslashes($_POST["DogsSex"]);
  $SpayedNeutered = stripslashes($_POST["SpayedNeutered"]);

  $Medications = stripslashes($_POST["Medications"]);
  $Diet = stripslashes($_POST["Diet"]);
  $Exercise = stripslashes($_POST["Exercise"]);
  $Story = stripslashes($_POST["Story"]);

  $Diabetes = stripslashes($_POST["Diabetes"]);
  $KidneyLiver = stripslashes($_POST["KidneyLiver"]);
  $FoodAllergies = stripslashes($_POST["FoodAllergies"]);
  $HeartDisease = stripslashes($_POST["HeartDisease"]);
  $Other = stripslashes($_POST["Other"]);
 
  $entrant = sprintf("Please Enter Us Into the Healthiest Hound Contest: %s\n\nName: %s\n\nAddress: %s %s\n\nPhone:%s\n\nCell Phone: %s\n\nEmail: %s\n",
    $Name, $Address, $City, $State, $Zip, $Phone, $Cell, $Email);

  $hound = sprintf("Description of Hound to Be Entered:\nName: %s, Age: %s, Breed: %s, Weight: %s, Sex: %s, Spayed/Neutered: %s\n\n\n",
    $DogsName, $DogsAge, $Breed, $DogsWeight, $DogsSex, $SpayedNeutered);
           
  $details = sprintf("Medications:\n\n%s\n\nDiet:\n\n%s\n\nExercise: %s\n\nStory: %s\n\n\n",
    $Medications, $Diet, $Exercise, $Story);

  $ailments = sprintf("Diabetes: %s\n\nKidney/Liver Disease: %s\n\nFood Allergies: %s\n\nHeart Disease: %s\n\nOther: %s\n\n",
    $Diabetes, $KidneyLiver, $FoodAllergies, $HeartDisease, $Other);

  $body1 = sprintf("%s\n%s\n%s\n%s\n",
    $entrant, $hound, $details, $ailments);
   
  $body2 = sprintf("Thank You For Applying to Our Curb Your Pouch Contest\nWe will get back with you in several working days\nHere is the info you sent us.  Thanks Again!!\n\n%s", $body1);


     // generate a random string to be used as the boundary marker
   $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

   // now we'll build the message headers
   $headers .= "Bcc: [email]hhstables@hhstables.com[/email]";
   $headers = "From: $from\r\n" .
   "MIME-Version: 1.0\r\n" .
      "Content-Type: multipart/mixed;\r\n" .
      " boundary=\"{$mime_boundary}\"";

   // here, we'll start the message body.
   // this is the text that will be displayed
   // in the e-mail
   $message= "$body2";

   // next, we'll build the invisible portion of the message body
   // note that we insert two dashes in front of the MIME boundary
   // when we use it
   $message = "This is a multi-part message in MIME format.\n\n" .
      "--{$mime_boundary}\n" .
      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
      "Content-Transfer-Encoding: 7bit\n\n" .
   $message . "\n\n";

   // now we'll process our uploaded files
   foreach($_FILES as $userfile){
      // store the file information to variables for easier access
      $tmp_name = $userfile['tmp_name'];
      $type = $userfile['type'];
      $name = $userfile['name'];
      $size = $userfile['size'];

      // if the upload succeded, the file will exist
      if (file_exists($tmp_name)){

         // check to make sure that it is an uploaded file and not a system file
         if(is_uploaded_file($tmp_name)){
    
            // open the file for a binary read
            $file = fopen($tmp_name,'rb');
    
            // read the file content into a variable
            $data = fread($file,filesize($tmp_name));

            // close the file
            fclose($file);
    
            // now we encode it and split it into acceptable length lines
            $data = chunk_split(base64_encode($data));
         }
    
         // now we'll insert a boundary to indicate we're starting the attachment
         // we have to specify the content type, file name, and disposition as
         // an attachment, then add the file content.
         // NOTE: we don't set another boundary to indicate that the end of the
         // file has been reached here. we only want one boundary between each file
         // we'll add the final one after the loop finishes.
         $message .= "--{$mime_boundary}\n" .
            "Content-Type: {$type};\n" .
            " name=\"{$name}\"\n" .
            "Content-Disposition: attachment;\n" .
            " filename=\"{$fileatt_name}\"\n" .
            "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n";
      }
   }
   // here's our closing mime boundary that indicates the last of the message
   $message.="--{$mime_boundary}--\n";
   // now we just send the message
   if (@mail($to, $subject, $message, $headers))
      echo "Message Sent";
   else
      echo "Failed to send";
} else {
}

awuehr 11-25-2008 05:44 AM

Well, as you use the php function mail(), the only way you can configure the mta is via the corresponding settings in your php.ini, I think.

I know 2 great frameworks for sending e-mails in php. The first one is Zend_Mail.

A more complex and more functional framework is Swift Mailer. As I said - it's quite complicated but it offers you nearly every functionality (i. E. embedding images, load balancing, speed throttling) and is designed for mass e-mails.



Alex

hhstables 11-25-2008 08:48 PM

I have tried the swift mailer and can not get it to work for me. However I have not tried Zend Mail I'm going to give it a try thanks.

sarmenhb 12-03-2008 05:59 PM

regarding all those stripslashes you have, what you can do is have an external file called functions and have a function like this


function secure($value) {

return mysql_real_escape_string(addslashes(trim($value))) ;

}

and for every field you want to escape symbols you just do secure($_POST['something']);

much cleaner :)


All times are GMT. The time now is 02:38 PM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0