Avatar billede hfrontdk Nybegynder
12. januar 2003 - 16:30 Der er 19 kommentarer og
1 løsning

Send mail med fil

Jeg søger et mail script som kan sendes vedlagt en uploadet fil (også uden) - gerne med størrelses-begrænsning på filen hvis det kan lade sig gøre.
Avatar billede woodydrn Nybegynder
12. januar 2003 - 17:24 #1
Fandt et hurtigt script her:

    $boundary = uniqid( "");
    $headers =  "From: $email
Content-type: multipart/mixed; boundary=\"$boundary\"";

    // attachment er navnet på dit <input type=file name=attachment>   
if ($attachment_type) $mimeType = $attachment_type;
    else $mimeType =  "application/unknown";

    $fileName = $attachment_name;

    $fp = fopen($attachment,  "rb");
    $read = fread($fp, filesize($attachment));
    $read = base64_encode($read);
    $read = chunk_split($read);
    $body =  "--$boundary
Content-type: text/html; charset=iso-8859-1
Content-transfer-encoding: 8bit

<html>
<head>
  <title>Mail</title>
</head>
<body>

teksten ...

</body>
</html>


--$boundary
Content-type: $mimeType; name=$fileName
Content-disposition: attachment; filename=$fileName
Content-transfer-encoding: base64

$read

--$boundary--";


mail("hvemtil@test.dk", "subject", $body, $headers);
Avatar billede woodydrn Nybegynder
12. januar 2003 - 17:28 #2
Du kan så skrive if ($attachment) { ... hele mit svar før ... }
else {  $header  = "From: fra@mig.dk\n".
            "Reply-To: fra@mig.dk\n".
            "X-Mailer: PHP/" . phpversion();

$message .= "blah blah\r\n";

mail("til@enelleranden", "subj", $message, $header);
Avatar billede tipsen Nybegynder
13. januar 2003 - 12:16 #3
Vil du sende mailen med filen eller filen med mailen ? ;-)
Avatar billede woodydrn Nybegynder
13. januar 2003 - 14:53 #4
Hvad mener du ? Det virker fint hos mig, er det hvor jeg sætter filen ind og teksten du mener der er forkert ? Jeg sniffede bare da jeg sendte en mail og så hvordan headeren var, så sætte det ind i php ...
Avatar billede tipsen Nybegynder
13. januar 2003 - 18:29 #5
Det var bare en kommentar til formuleringen af selve spørgsmålet - ikke til din besvarelse der sikkert er fin.
Avatar billede hfrontdk Nybegynder
13. januar 2003 - 20:50 #6
Jeg får en fejl på linie 51 - kan du ikke lave scriptet sådan som det skal se ud i sin fulde form?
Avatar billede woodydrn Nybegynder
13. januar 2003 - 21:08 #7
mailfile.html:
<html
<head>
  <title>mail</title>
</head>

<body>

<form action=mailfile.php enctype="multipart/form-data" method=post>
from: <input type=text name=from><br>
to: <input type=text name=to><br>

<textarea cols=30 rows=15 name=message></textarea><br><br>

<input type=file name=userfile><br>
<input type=submit name=submit><br>
</form>

</body>
</html>


mailfile.php:
<?php

$boundary = uniqid( "");
$headers =  "From: $from
Content-type: multipart/mixed; boundary=\"$boundary\"";

if ($attachment_type) $mimeType = $attachment_type;
    else $mimeType =  "application/unknown";

    $fp = fopen($userfile,  "rb");
    $read = fread($fp, filesize($userfile));
    $read = base64_encode($read);
    $read = chunk_split($read);
    $body =  "--$boundary
Content-type: text/html; charset=iso-8859-1
Content-transfer-encoding: 8bit

<html>
<head>
  <title>Mail</title>
</head>
<body>

$message

</body>
</html>


--$boundary
Content-type: $mimeType; name=$userfile_name
Content-disposition: attachment; filename=$userfile_name
Content-transfer-encoding: base64

$read

--$boundary--";


if (mail($to, "subject", $body, $headers)) {
print "mail sendt ...";
} else {
print "mail fejl ...";
}

?>
Avatar billede tipsen Nybegynder
13. januar 2003 - 23:57 #8
Hold da kæft, hvor er de reklamer der popper op i selve spørgsmålsfeltet belastende...
Avatar billede hfrontdk Nybegynder
14. januar 2003 - 19:45 #9
woodydrn: Nu har jeg lavet de to filer - mailfile.html som indeholde teksten ned til mailfile.php og så resten af teksten i mailfile.php filen.

Jeg kan ikke rigtig få det til at fungerer. Mailen bliver sendt, men ikke med den fil jeg vedhæfter - den vedlægger derimod en 1 kb fil uden navn og det gør den også hvis ikke jeg vedlægger nogen fil.

Og så kommer følgende fejl:

Warning: filesize() [function.filesize]: Stat failed for (errno=2 - No such file or directory) in /net/users/a37/862/kongskovdk/www/mailfile.php on line 11

Warning: fread(): supplied argument is not a valid stream resource in /net/users/a37/862/kongskovdk/www/mailfile.php on line 11

Linie 11 er den med:    $read = fread($fp, filesize($userfile));

Hvis du evt. vil maile mig dine filer må du gerne gøre det på webmaster@kongskov.dk ...
mail sendt ...
Avatar billede tipsen Nybegynder
15. januar 2003 - 00:58 #10
De fejl tyder jo også på, at filen ikke kan åbnes - dvs. stien eller filnavnet er forkert!
Avatar billede hfrontdk Nybegynder
15. januar 2003 - 07:57 #11
Jeg regner ikke med at jeg skal rette noget i scriptet for at få det til at virke, men er det ikke lidt mærkeligt at den sender den der 1 kb fil uanset hvad?
Avatar billede tipsen Nybegynder
15. januar 2003 - 11:03 #12
Prøv at gå ind og læse i den rå mail-kode så giver det sikkert mening
Avatar billede woodydrn Nybegynder
15. januar 2003 - 19:27 #13
åbenbart på linux skal funktionen fopen have hele stien til filen ... det er enten filepointeren $fp der er gal, ellers er det filesize commanden der skal have stien.

Jeg har desværre ikke linux til at teste det på :(
Avatar billede hfrontdk Nybegynder
17. januar 2003 - 09:48 #14
Æv, så må jeg se om jeg kan finde et andet script som kan gøre det. Ellers tak for hjælpen!
Avatar billede tipsen Nybegynder
17. januar 2003 - 11:45 #15
-hvorfor ikke bare give hele stien...
Avatar billede woodydrn Nybegynder
17. januar 2003 - 16:08 #16
Det var nu også det jeg mente ;)
Avatar billede ulfhedne Nybegynder
17. januar 2003 - 16:35 #17
Hvordan skulle mailfile.php så se ud?
Avatar billede woodydrn Nybegynder
17. januar 2003 - 21:49 #18
som jeg sagde, ved jeg ikke om det er filesize den skal bruge hele stien, eller om det er fopen ... men prøv fopen("/net/users/a37/862/kongskovdk/www/".$userfile, "fb"); eller istedet med filesize hvis det ikke virker
Avatar billede hfrontdk Nybegynder
18. januar 2003 - 10:21 #19
Hmm hvorfor kan jeg ikke se de sidste fem kommentarer?
Avatar billede hfrontdk Nybegynder
10. februar 2003 - 08:47 #20
Min fejl - jeg fandt ud af at der er PHP upload-funktion som skulle aktiveres på mit webhotel og derefter virkede det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester