PHP email form with attachments

php email form that can send attachments

Sending a plain email is extremely easy. mail function provided in php does everthing you need behind the seen. Only problem can occur when you need to attach one or multiple files with email using your script.

php email form that can send attachments

Now you are ready !

———————————————————


<?php
/* Mailer with Attachments */

$action $_REQUEST[‘action’];
global 
$action;

function showForm() {
?>

  <form enctype=”multipart/form-data” name=”send” method=”post” action=”<?=$_SERVER[‘PHP_SELF’]?>“>
  <input type=”hidden” name=”action” value=”send” />
  <input type=”hidden” name=”MAX_FILE_SIZE” value=”10000000″ />
    <p>Recipient Name: <input name=”to_name” size=”50″ />
    Recipient Email: <input name=”to_email” size=”50″ />
    From Name:  <input name=”from_name” size=”50″ />
    From Email:  <input name=”from_email” size=”50″ />
    Subject:  <input name=”subject” size=”50″ />
    Message: <textarea name=”body” rows=”10″ cols=”50″></textarea>
    Attachment: <input type=”file” name=”attachment” size=”50″ />
    <input type=”submit” value=”Send Email” /></p>
  
<?php
}

function sendMail() {
  if (!isset (
$_POST[‘to_email’])) { //Oops, forgot your email addy!
    
die (“<p>Oops!  You forgot to fill out the email address! Click on the back arrow to go back</p>”);
  }
  else {
    
$to_name stripslashes($_POST[‘to_name’]);
    
$from_name stripslashes($_POST[‘from_name’]);
    
$subject stripslashes($_POST[’subject’]);
    
$body stripslashes($_POST[‘body’]);
    
$to_email $_POST[‘to_email’];
    
$attachment $_FILES[‘attachment’][‘tmp_name’];
    
$attachment_name $_FILES[‘attachment’][‘name’]; 
    if (
is_uploaded_file($attachment)) { //Do we have a file uploaded?
      
$fp fopen($attachment“rb”); //Open it
      
$data fread($fpfilesize($attachment)); //Read it
      
$data chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed
        
fclose($fp);
    }
    
//Let’s start our headers
    
$headers “From: $from_name<” $_POST[‘from_email’] . “>\n”;
    
$headers .= “Reply-To: <” $_POST[‘from_email’] . “>\n”
    
$headers .= “MIME-Version: 1.0\n”;
    
$headers .= “Content-Type: multipart/related; type=\”multipart/alternative\”; boundary=\”—-=MIME_BOUNDRY_main_message\”\n”
    
$headers .= “X-Sender: $from_name<” $_POST[‘from_email’] . “>\n”;
    
$headers .= “X-Mailer: PHP4\n”;
    
$headers .= “X-Priority: 3\n”//1 = Urgent, 3 = Normal
    
$headers .= “Return-Path: <” $_POST[‘from_email’] . “>\n”
    
$headers .= “This is a multi-part message in MIME format.\n”;
    
$headers .= “——=MIME_BOUNDRY_main_message \n”
    
$headers .= “Content-Type: multipart/alternative; boundary=\”—-=MIME_BOUNDRY_message_parts\”\n”
    
    
$message “——=MIME_BOUNDRY_message_parts\n”;
    
$message .= “Content-Type: text/plain; charset=\”iso-8859-1\”\n”
    
$message .= “Content-Transfer-Encoding: quoted-printable\n”
    
$message .= “\n”
    
/* Add our message, in this case it’s plain text.  You could also add HTML by changing the Content-Type to text/html */
    
$message .= “$body\n”;
    
$message .= “\n”
    
$message .= “——=MIME_BOUNDRY_message_parts–\n”
    
$message .= “\n”
    
$message .= “——=MIME_BOUNDRY_main_message\n”
    
$message .= “Content-Type: application/octet-stream;\n\tname=\”" $attachment_name “\”\n”;
    
$message .= “Content-Transfer-Encoding: base64\n”;
    
$message .= “Content-Disposition: attachment;\n\tfilename=\”" $attachment_name “\”\n\n”;
    
$message .= $data//The base64 encoded message
    
$message .= “\n”
    
$message .= “——=MIME_BOUNDRY_main_message–\n”

    // send the message
    
mail(“$to_name<$to_email>”$subject$message$headers); 
    print 
“Mail sent.  Thank you for using the PE Mailer.”;
  }
}

?>

<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN”
    ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
  <head>
    ****** http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
    <style=”css” type=”text/css”>
      <!–
      body {
        margin: 0px;
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
      }
      a {color: #0000ff}
      –>
    </style>
  </head>
  <body>

<?php
switch ($action) {
  case 
“send”:
    
sendMail();
    
showForm();
    break;
  default:
    
showForm();
}
?>

  </body>
</html>


———————————————————

 




Leave a Reply



Related Posts

Software



Site Navigation