hi fellas out thiere im having a headache right now in sending email with attachment..im using ftp in storing the file in my dirctory and sending it to my email...i can upload the file and send it but the prolem is when i try to dowload the file from the email it has no data as in "0 bytes"..any suggestion or insight please thanks..i just modify this code for my needs...

here is the sendmail.php

<?php

   $ftp_server='www.mysite.com';//serverip
   $conn_id = ftp_connect($ftp_server); 


   // login with username and password
   $user="myusername";
   $passwd="mypassword";
   $login_result = ftp_login($conn_id, $user, $passwd); 

// check connection
   if ((!$conn_id) || (!$login_result)) { 
       echo "FTP connection has failed!";
       echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
       die; 
   } else {
       echo "<br>Connected to $ftp_server, for user $user<br>";
   }
//directorylike /www.mydomain.com/upload/upload
  ftp_chdir($conn_id, "public_html/mail/upload");

//here we create the unique name for the uploaded file so that it wont overwrite an existing file
$uniqueID = uniqid("");
$destination_file= $uniqueID.".doc";

echo ("<br>");
print $destination_file;
echo ("<br>");

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
       echo "FTP upload has failed!";
   } else {
       echo "Uploaded $source_file to $ftp_server as $destination_file";
   }

// close the FTP stream 
ftp_close($conn_id); 
?>
<html>
<head>
<title></title>
</head>
<Body>
<form name="form1" method="post" action="mail.php">
  <p>
    <input name="id" type="text" id="id" value="<?php echo $destination_file; ?>">
</p>
  <table width="75%"  border="1">
    <tr>
      <td><div align="right">Name:</div></td>
      <td><input name="nume" type="text" id="nume"></td>
    </tr>
    <tr>
      <td><div align="right">Surnume:</div></td>
      <td><input name="prenume" type="text" id="prenume"></td>
    </tr>
    <tr>
      <td><div align="right">E- mail: </div></td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr>
      <td><div align="right">Aplication for : </div></td>
      <td><input name="post" type="text" id="post"></td>
    </tr>
  </table>
  <p>
    <input type="submit" name="Submit" value="Next &gt;&gt;&gt;">
  </p>
</form>
</Body>
</html>

and this os for the mail.php

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<style type="text/css">
<!--
.style17 {  font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
}
-->
</style>
</head>
<body>
<p>
</p>
<?php 
//to be successfull in useing this code you need to create a directory called upload
//on you ftp create a directory upload in wich copy the content of the zip file

//$filleant takes the value of the picture that was jut uploaded with the unique name to the ftp in the www.yourname.com/upload/upload
$fileatt = "upload/".$_POST['id']; // Path to the file                  
$fileatt_type = "application/octet-stream"; // File Type 
//here i made the file that will be sent as attachment to have the name "CV_name_surname.doc" you can make it what format you like,
//i needed the doc format... and i'll modify this code to accept just doc file later...i'm really tired right now :D
$fileatt_name = "CV_".$_POST['nume']."_".$_POST['prenume'].".doc"; // Filename that will be used for the file as the attachment 

//$email_from is the variable that gets the value, of the From: field that will appear in your received mail 
$email_from = $_POST['nume']." ".$_POST['prenume']; // Who the email is from 

//Here you define the subject of you message
$email_subject = "CV."; // The Subject of the email 

//here you define the body of the message, the message itself
//you can modify the "post" textfield in sendmail.php to a textarea....
$email_message = $_POST['post']; // Message that the email has in it 

//here you enter the e-mail address to wich you want the message to be sent
$email_to = "n.mendez@europcar.com.ph"; // Who the email is too 

//adds the e-mail address of the sender
$headers = "From: ".$_POST['email']; 

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

$headers .= "\nMIME-Version: 1.0\n" . 
            "Content-Type: multipart/mixed;\n" . 
            " boundary=\"{$mime_boundary}\""; 

$email_message .= "This is a multi-part message in MIME format.\n\n" . 
                "--{$mime_boundary}\n" . 
                "Content-Type:text/html; charset=\"iso-8859-1\"\n" . 
               "Content-Transfer-Encoding: 7bit\n\n" . 
$email_message . "\n\n"; 



/********************************************** First File ********************************************/ 

//$filleant takes the value of the picture that was jut uploaded with the unique name to the ftp in the www.yourname.com/upload/upload
$fileatt = "upload/".$_POST['id']; // Path to the file                  

$fileatt_type = "application/octet-stream"; // File Type 

//here i made the file that will be sent as attachment to have the name "CV_name_surname.doc" you can make it what format you like,
//i needed the doc format... and i'll modify this code to accept just doc file later...i'm really tired right now :D
$fileatt_name = "CV".$_POST['nume']."_".$_POST['prenume'].".doc"; // Filename that will be used for the file as the attachment 

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file); 


$data = chunk_split(base64_encode($data)); 

$email_message .= "--{$mime_boundary}\n" . 
                  "Content-Type: {$fileatt_type};\n" . 
                  " name=\"{$fileatt_name}\"\n" . 
                  //"Content-Disposition: attachment;\n" . 
                  //" filename=\"{$fileatt_name}\"\n" . 
                  "Content-Transfer-Encoding: base64\n\n" . 
                 $data . "\n\n" . 
                  "--{$mime_boundary}\n"; 
unset($data); 
unset($file); 
unset($fileatt);
unset($fileatt_type); 
unset($fileatt_name); 

/********************************************** End of File Config ********************************************/ 

// To add more files just copy the file section again, but make sure they are all one after the other! If they are not it will not work! 

$ok = @mail($email_to, $email_subject, $email_message, $headers); 
if($ok) { 
echo "<font face=verdana size=2>The file was successfully sent!</font>"; 
} else { 
die("Sorry but the email could not be sent. Please go back and try again!"); 
} 
?>
<p>&nbsp;</p>
</body>
</html>
Member Avatar for LastMitch

@ehpratah

i can upload the file and send it but the prolem is when i try to dowload the file from the email it has no data as in "0 bytes"..any suggestion or insight please thanks..i just modify this code for my needs...

I look over your code and everything seems right.

I think you used this code:

http://www.koderguru.com/tutorials/phptutorials/ftp.php

and also phpmailer?

The only thing might be the issue is ftp_put() function.

$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

Instead of ftp_put() function try to used ftp_get() function.

$upload = ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY); 

I know you answer your own question. So you will be the only one that knows the correct answer.

@LastMitch
yeah found it while looking for some Enlightenment on google on how to make it work..but i already forgot how i solved it LoL:D anyway happy new year guyzz!!!!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.