Php Mail med vedhæftet fil
Goddag eksperter--vil gerne give folk mulighed for at vedhæfte en fil i min form
det virker tilsyneladene fint... men når jeg modtager mailen kan jeg ikke åbne den vedhæftede fil.. (hverken hotmail, eller gmail) gmail kalden den "nofile" og hotmail viser godt nok det rigtige navn og størrelse, men en "blank" fil.
koden er som følger
HTML side:
<form action="email2.php" method="POST" enctype="multipart/form-data">
Name:<input type="input" name="fname"><br/>
E-mail:<input type="input" name="email"><br/>
Subject:<input type="input" name="subject"><br/>
Message:<br /><textarea name="message"></textarea><br/>
File:<input type="file" name="upfile" id="upfile"><br /><br />
<input type="submit" value="send">
</form>
PHP side:
<?
//-----------------------
class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
//-----------------------
function mime_mail()
{
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
//-----------------------
function add_attachment($message, $name = "", $ctype = "application/octet-stream")
{
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}
//-----------------------
function build_message($part)
{
$message = $part[ "message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part[ "ctype"].
($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
//-----------------------
function build_multipart()
{
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME
encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i >= 0; $i--)
{
$multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
}
return $multipart.= "--\n";
}
//-----------------------
function send()
{
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from. "\n";
if (!empty($this->headers))
$mime .= $this->headers. "\n";
if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
mail($this->to, $this->subject, "", $mime);
}
};
//-----------------------
$attachment = fread(fopen($_FILES['upfile']["name"], "r"), filesize($_FILES['upfile']["name"]));
$mail = new mime_mail();
$mail->from = $_POST["fname"]. "<".$_POST["email"].">";
$mail->$headers = "";
$mail->to = "min@mail.com";
$mail->subject = $_POST["subject"];
$mail->body = $_POST["message"];
$mail->add_attachment("$attachment", $_FILES['upfile']["name"], "image/jpeg");
$mail->send();
echo "mail send";
echo "Upload: " . $_FILES["upfile"]["name"] . "<br />";
echo "Type: " . $_FILES["upfile"]["type"] . "<br />";
echo "Size: " . ($_FILES["upfile"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["upfile"]["tmp_name"] . "<br />";
?>