webForumDet fria alternativet

skicka bilder med mail()

PHP

3 svar · 425 visningar · startad av Tim

Medlem sedan jan. 2002115 inlägg
Frågan#1

Tja

Jag får inte det här att stämma, exemplet är taget från PHP-programmering med Viktor Jonsson. Jag var tvungen att ändra lite på det för att det skulle funka utan register_globals...

Det mest irriterande är att if-satsen körs oavsett ifall jag laddat upp någonting i fältet bilaga eller inte...

Sen så får jag följande felmeddelande:

Warning: fopen("Array", "rb") - No such file or directory in c:\rootwww\mime.php on line 45

Warning: stat failed for 0 (errno=2 - No such file or directory) in c:\rootwww\mime.php on line 46

Warning: Supplied argument is not a valid File-Handle resource in c:\rootwww\mime.php on line 46

Warning: Supplied argument is not a valid File-Handle resource in c:\rootwww\mime.php on line 48

Det är för övrigt så mycket fel med det här att jag tror jag frågar er om ni har någon egen lösning på hur man skickar e-post med bifogade binära/text filer genom PHP's mailfunktioner. Är detta svårt????????????

<?php

} else {

$namn = $_POST["namn"];
$epost = $_POST["epost"];
$epost_kropp = $_POST["text"];
$amne = $_POST["amne"];
$till = "pha598m@tninet.se";
$bilaga = $_FILES["bilaga"];
$bilagan = $_FILES["bilaga"]["name"];
$bilagat = $_FILES["bilaga"]["type"];
$bilagas = $_FILES["bilaga"]["size"];
$fran = $namn."<".$epost.">";

$postrubriker = "From: $fran\n";
$postrubriker .= "Reply-To: $fran\n";

if(isset($bilaga)) {

$fil = fopen($bilaga,"rb");
$data = fread($fil, filesize($bilagas));
$kodad_bilaga = chunk_split(base64_encode($data));
fclose($fil);

$postrubriker .= "MIME-version: 1.0\n";
$postrubriker .= "Content-type: multipart/mixed; ";
$postrubriker .= "Boundary=\"Message-Boundary\"\n";

$postrubriker .= "Content-Transfer-Encoding: 7bit\n";

$epost_top = "--Message-Boundary\n";
$epost_top .= "Content-type: text/plain; charset=iso-8859-1\n";
$epost_top .= "Content-Transfer-Encoding: 8bit\n";

$epost_kropp = $epost_top . $epost_kropp;

$epost_kropp .= "\n\n--Message-Boundary\n";
$epost_kropp .= "Content-type: $bilagat; name=\"$bilagan\"\n";
$epost_kropp .= "Content-Transfer-Encoding: Base64\n";
$epost_kropp .= "Content-disposition: filename=\"$bilagan\"\n\n";
$epost_kropp .= "$kodad_bilaga\n";
$epost_kropp .= "--Message-Boundary--\n";
}
mail($till,$amne,$epost_kropp,$postrubriker);

}

?>

Medlem sedan jan. 20007 697 inlägg
#2

Filen som du försöker öppna med fopen() är en array, så därför verkar det inte gå. Vad är sen rb som du väljer att öppna filen med dessa rättigheter? Det kanske finns, kan ju vara så att jag har missat det, men testa att bara använda r.

Medlem sedan mars 20007 896 inlägg
#3

Testa att sätta $bilaga så här:

$bilaga = $_FILES[ "bilaga" ][ "tmp_name" ];

Då får du namnet på filen som den lagras temporärt på servern med.

Kim> b sätts efter om man ska läsa binära filer på en Windows-server, om jag inte minns fel. :)

Medlem sedan jan. 20007 697 inlägg
#4

ok, man lär sig nåt nytt varje dag. :)

254 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)