PHP Send email with attachments - sendmail form with attachments
Written by admin on February 3rd, 2009 in Software.
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($fp, filesize($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>
———————————————————
