SitePoint Sponsor

User Tag List

Results 1 to 4 of 4
  1. #1
    SitePoint Enthusiast
    Join Date
    Apr 2006
    Posts
    26
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    php form and bare LF error

    This code displays a simple form and should email the content including the attachment to my yahoo or hotmail account, but I get the following error message:

    Warning: mail(): SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in D:\htown\blue\bluehat.com\trying.php on line 82
    Failed to send

    I've checked http://cr.yp.to/docs/smtplf.html and it tells me "your mailer sent a bare LF".

    How do I correct this?

    HTML Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <title>E-mail with Attachment</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <body> 
    <?php 
       if ($_SERVER['REQUEST_METHOD']=="POST"){ 
    
       // we'll begin by assigning the To address and message subject 
       $to="bluedigit@yahoo.co.uk"; 
    
       $subject="E-mail with attachment"; 
    
       // get the sender's name and email address 
       // we'll just plug them a variable to be used later 
       $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; 
    
       // generate a random string to be used as the boundary marker 
       $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; 
    
       // store the file information to variables for easier access 
       $tmp_name = $_FILES['filename']['tmp_name']; 
       $type = $_FILES['filename']['type']; 
       $name = $_FILES['filename']['name']; 
       $size = $_FILES['filename']['size']; 
    
       // here we'll hard code a text message 
       // again, in reality, you'll normally get this from the form submission 
       $message = "Here is your file: $name"; 
    
       // 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 build the message headers 
          $headers = "From: $from\r\n" . 
             "MIME-Version: 1.0\r\n" . 
             "Content-Type: multipart/mixed;\r\n" . 
             " boundary=\"{$mime_boundary}\""; 
    
          // next, we'll build 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 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 and set another boundary to 
          // indicate that the end of the file has been reached 
          $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" . 
             "--{$mime_boundary}--\n"; 
    
          // now we just send the message 
          if (mail($to, $subject, $message, $headers)) 
             echo "Message Sent"; 
          else 
             echo "Failed to send"; 
       } 
    } else { 
    ?> 
    <p>Send an e-mail with an attachment:</p> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" 
       enctype="multipart/form-data" name="form1"> 
       <p>From name: <input type="text" name="fromname"></p> 
       <p>From e-mail: <input type="text" name="fromemail"></p> 
       <p>File: <input type="file" name="filename"></p> 
       <p><input type="submit" name="Submit" value="Submit"></p> 
    </form> 
    <?php } ?> 
    </body> 
    </html>
    Please I'd be gratefull for your help.

  2. #2
    Follow Me On Twitter: @djg gold trophysilver trophybronze trophy Dan Grossman's Avatar
    Join Date
    Aug 2000
    Location
    Philadephia, PA
    Posts
    20,578
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    SOUNDS like it's complaining about your use of \n and \n\n when you should be using \r\n. (carriage return and line feed)

  3. #3
    SitePoint Enthusiast
    Join Date
    Apr 2006
    Posts
    26
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks it did the trick.

    But unfortunatly I'm receiving an empty blank image file in my email, instead of an image.

    Any ideas?

  4. #4
    Follow Me On Twitter: @djg gold trophysilver trophybronze trophy Dan Grossman's Avatar
    Join Date
    Aug 2000
    Location
    Philadephia, PA
    Posts
    20,578
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Use a good mailing class like PHPMailer or SwiftMailer which make sending a mail with an attachment a few lines of code, and hide all the details you're trying to handle yourself


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •