Avatar billede mikkelsen1980 Nybegynder
15. oktober 2002 - 01:41 Der er 4 kommentarer og
1 løsning

Vedhæft fil fra server i mail

Jeg har kigget på denne kode i 2-3 timer nu, men kan ikke få den grejet
rundt, så jeg kan indsætte en fil fra serveren, f.eks fil1.txt. Den behøver
kun at kunne sende txt filer.

http://delfs.dk/articles/danish/Haeft_filer_ved_mails.html

Koden her virker fint nok, men jeg skal bare have fyldt mine variabler ind i
stedet for at bruge formen, samt bruge filen fra serveren.

Håber meget der er nogen der kan hjælpe...Gerne en natte-ravn :)

Mvh Lars
Avatar billede angelod Novice
15. oktober 2002 - 01:59 #1
Hvilke variabler snakker vi om, og hvilken fil? Så skal jeg udarbejde et eksempel :)
Avatar billede mikkelsen1980 Nybegynder
15. oktober 2002 - 08:08 #2
fil: tekst.txt
Denne tekst bliver lavet på serveren. Skal vedhæftes som alm tekst.

$fra = "mail@mail.dk"
$til = "til@mail.dk"
$emne = "Emnet"
$besked = "Selve mailen...."

Håber du kan bruge det til at lave et eksempel.

Mvh Lars
Avatar billede angelod Novice
15. oktober 2002 - 10:42 #3
Okay, det følgende kode vil sende en mail med de egenskaber du har angivet der. Jeg fandt at den ændrede på Enter, sådan at det passede til DOS/Linux, men det kan sagtens læses alligevel. Det er nemlig kun Notepad der har problemer med det. Næsten alle andre tekst-editor programmer kan vise den korrekt.

Jeg vil imidlertid kigge på det problem og se om jeg kan løse det. :)


<?php
    // Definér variabler
    $fil = "tekst.txt";
    $fra = "mail@mail.dk";
    $til = "til@mail.dk";
    $emne = "Emnet";
    $besked = "Selve mailen....";
   
    // Definér $boundary
    // boundary er en unik streng der identifiserer vores email
    $boundary = uniqid("");
   
    // Siden det er en tekstfil, kender vi allerede MIME typen
    $mimeType =  "text/plain";
   
    // Læs filen ind i en variable
    $fil_var = fread(fopen($fil, "r"), filesize($fil));
   
    // Gør filen læsevenlig for email-klienten
    $fil_var = base64_encode($fil_var);
   
    // Split filkoden op i linier med 76 tegn i hver
    $fil_var = chunk_split($fil_var);
   
    // Følgende lille stykke klarer det meste mht. headers, der fortæller email-klienten hvad der er på vej

    // Vi sætter vores unikke streng ind her
    $body  = "\n--$boundary\n";
   
    // Vi fortæller at følgende stump er af typen text/plain samt
    // hvilket tegnsæt vi bruger
    $body .= "Content-type: text/plain; charset=iso-8859-1\n";
    $body .= "Content-transfer-encoding: 8bit\n\n";
   
    // Vi sætter body-texten ind her
    $body .= $besked."\n\n";
   
   
    // Slut på brødteksten
    $body .= "--$boundary\n";
   
    // Så er det filens tur
    // Vi fortæller lige mime-typen og filnavnet
    $body .= "Content-type: $mimeType; name=".$fil."\n";
   
    // Fortæller at vi vil have filen hæftet ved - ikke direkte i mailen.
    // Vil du gerne have den direkte i mailen, ændres 'attachment' til 'inline'
    // Bemærk: Bl.a. OE viser _også_ filen i selve mailen selvom du angiver 'attachment'
    $body .= "Content-disposition: attachment; filename=".$fil."\n";
   
    // Klienten skal have at vide at meddelelsen er encoded med base64
    $body .= "Content-transfer-encoding: base64\n\n";
   
    // Vi sætter filkoden ind
    $body .= $fil_var."\n\n";
   
    // Vi slutter af med den samme unikke streng som vi startede med
    $body .= "--$boundary--";
   
    // Vi definerer from-headeren
    $headers  = "From: ".$fra."<x@z.com>\n";
   
    // Vi fortæller hvilken type indhold mailen indeholder
    // samt emailens unikke id-streng
    $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
   
    // Hvis mailen bliver sendt afsted problemfrit
    if (mail($til, $emne, $body, $headers)) {
        echo "Mailen er sendt!";
       
    // Hvis ikke skriver vi lige en fejlmeddelelse
    } else {
        echo "Der opstod en fejl, og mailen blev ikke sendt!";
    }
?>
Avatar billede mikkelsen1980 Nybegynder
15. oktober 2002 - 23:59 #4
Jeg har fået det til at virke nu. Skidt med ENTER "fejlen", da jeg ikke skal bruge mellemrum.

Nu har jeg dog det problem, at jeg ikke kan få oprettet den fil der skal vedhæftes, da serveren køre SAFE MODE. Jeg har CHMOD dir til 666.

Er der noget at gøre så?
Avatar billede angelod Novice
16. oktober 2002 - 20:31 #5
Skal filen oprettes dynamisk? Så kan du jo bare oprette den i hukommelsen og stadigvæk sende den som en attachment.

Beklager det sene svar. Jeg var lige ude og besøge en gammel kammerat. :)
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