Hello everyone! this is my first post on PHP Builder
I have almost got this working but something still is not quite right....
The PHP form I'm currently using sends the input text and the attachment YAY it also places the file on my server YAY but when I go to view the attachment in my inbox it cannot read it. 😕
I'm thinking I have an encoding issue.
Here is the details of my server http://www.employsa.com.au/test.php
REALLY NEED YOUR EXPERTISE ON THIS ONE GUYS!!!
<?
class CMailFile {
var $subject;
var $addr_to;
var $text_body;
var $text_encoded;
var $mime_headers;
var $mime_boundary = "--==================_846811060==_";
var $smtp_headers;
function CMailFile($subject,$to,$from,$msg,$filename,$mimetype
= "application/msword", $mime_filename = true) {
$this->subject = $subject;
$this->addr_to = $to;
$this->smtp_headers = $this->write_smtpheaders($from);
$this->text_body = $this->write_body($msg);
$this->text_encoded = $this->attach_file
($filename,$mimetype,$mime_filename);
$this->mime_headers = $this->write_mimeheaders($filename,
$mime_filename);
}
function attach_file($filename,$mimetype,$mime_filename) {
$encoded = $this->encode_file($filename);
if ($mime_filename) $filename = $mime_filename;
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-type: " . $mimetype . ";
name=\"$filename\";\n";
$out = $out . "Content-Transfer-Encoding: base64\n";
$out = $out . "Content-disposition:attachment;filename=\"$filename\"\n\n";
$out = $out . $encoded . "\n";
$out = $out . "--" . $this->mime_boundary . "--" . "\n";
return $out;
}
function encode_file($sourcefile) {
if (is_readable($sourcefile)) {
$fd = fopen($sourcefile, "r");
$contents = fread($fd, filesize($sourcefile));
$encoded = my_chunk_split(base64_encode($contents));
fclose($fd);
}
return $encoded;
}
function sendfile() {
$headers = $this->smtp_headers . $this->mime_headers;
$message = $this->text_body . $this->text_encoded;
mail($this->addr_to,$this->subject,$message,$headers);
return true;
}
function write_body($msgtext) {
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
$out = $out . $msgtext . "\n";
return $out;
}
function write_mimeheaders($filename, $mime_filename) {
if ($mime_filename) $filename = $mime_filename;
$out = "MIME-version: 1.0\n";
$out = $out . "Content-type: multipart/mixed; ";
$out = $out . "boundary=\"$this->mime_boundary\"\n";
$out = $out . "Content-transfer-encoding: 7BIT\n";
$out = $out . "X-attachments: $filename;\n\n";
return $out;
}
function write_smtpheaders($addr_from) {
$out = "From: $addr_from\n";
$out = $out . "Reply-To: $addr_from\n";
$out = $out . "X-Mailer: PHP3\n";
$out = $out . "X-Sender: $addr_from\n";
return $out;
}
}
function my_chunk_split($str)
{
$stmp = $str;
$len = strlen($stmp);
$out = "";
while ($len > 0) {
if ($len >= 76) {
$out = $out . substr($stmp, 0, 76) . "\r\n";
$stmp = substr($stmp, 76);
$len = $len - 76;
}
else {
$out = $out . $stmp . "\r\n";
$stmp = ""; $len = 0;
}
}
return $out;
}
//include ("CMailFile.class");
if($_POST[action])
{
print_r($_FILES);
// File path
$whereToFileUpload = "/var/www/html/uploads/";
$FullFileName = $whereToFileUpload. basename($_FILES['userfile']['name']);
// Upload to the server for mail attachement
if (move_uploaded_file($_FILES['ufile']['tmp_name'] ,$FullFileName ))
{
$mimetype=$_FILES['ufile']['type'];
$subject=$_POST['subject'];
$sendto=$_POST['email'];
$replyto="pauld@designstudious.com.au";
$message=$_POST['msg'];
$filetoattach=$FullFileName;
$newmail = new CMailFile ($subject,$sendto,$replyto,$message,$filetoattach,$mimetype);
if($newmail->sendfile())
{
Print '####### mail sent with Attachemnt';
exit;
}
else
{
print 'Error in mail senr pls check ur SMTP ip is correct';
exit;
}
}
else
{
print 'File upload error pls make sure ur file path is corret';
exit;
}
}
?>
<html>
<body>
<form method="post" enctype="multipart/form-data" >
Email <input type="text" name="email"> <br>
sub <input type="text" name="subject"> <br>
msg <input type="text" name="msg"> <br>
file to att <input type="file" name="ufile"> <br>
<input type="submit" name="action" value="senf mail with atta"> <br>
</form>
</body>
</html>