zero-perfoliate
zero-perfoliate

Author Topic: Sending email on a windows server  (Read 457 times)

Offline accessbit

  • New PHP Members
  • Posts: 1
  • Karma: +0/-0
Sending email on a windows server
« on: December 07, 2008, 04:13:57 PM »
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?

Code: [Select]
<?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 "mikehomecom@yahoo.com";
    
$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_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.