accessbit Posted December 7, 2008 Share Posted December 7, 2008 I am forced to send email from php on a windows server and have the email sending, the attachment sending, but the body is not displaying. I am assuming this is an issue with the headers. Can someone help me out please? <?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> From Email: <input name="from_email" size="50" /> <br /> Message: <textarea name="body" rows="10" cols="50"></textarea> <br /> Attachment: <input type="file" name="attachment" size="50" /> <br /> <br /> <input type="submit" value="Send Email" /> </p> </form> <?php } function sendMail() { if (!isset ($_POST['from_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 { $from_name = stripslashes($_POST['from_name']); $subject = "EF Mag Ads Submission"; $body = stripslashes($_POST['body']); $to_email = "[email protected]"; $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_email", $subject, $message, $headers); print '<p align="center">Thank you!</p>'; } } ?> <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>EF Mag Ad Submission</title> <!-- 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(); break; default: showForm(); } ?> </body> </html> I also need help adding additional uploads, 4 in total. All help will be appreciated. Link to comment https://forums.phpfreaks.com/topic/135984-sending-email-on-a-windows-server/ Share on other sites More sharing options...
awpti Posted December 8, 2008 Share Posted December 8, 2008 I would highly suggest making use of the PHPMailer class to handle this. Also, you don't need to quote variables ("$to_email").. get rid of 'em. http://sourceforge.net/projects/phpmailer Link to comment https://forums.phpfreaks.com/topic/135984-sending-email-on-a-windows-server/#findComment-709045 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.