Avatar billede d.kryger Praktikant
16. februar 2005 - 10:26 Der er 11 kommentarer og
1 løsning

Hent billede fra en server

Hej eksperter...

Jeg har lige et spørgsmål som jeg håber nogle af jeg vil hjælpe mig med: På en af mine sider vil jeg gerne have det sådan at jeg kan afsende en e-mail med en vedhæftet fil...

Problemmet er bare at filen ikke ligger på min webserver, men først skal "hentes" fra en anden server!!! Dette skal ske uden at brugeren skal gøre noget...

Kan man lave en funktion, som henter et billede fra eks. http://123.456.789.0/billede.jpg og ligger det over på min webserver, og sender e-mail'en og derefter sletter billedet?
Avatar billede detox Nybegynder
16. februar 2005 - 10:58 #1
Hvis du kun ønsker at sende billedet kan det gøres meget enkelt:

$data = file_get_contents('http://123.456.789.0/billede.jpg');
$data = chunk_split(base64_encode($data));
$header = "Content-type: image/jpeg\n";
$header .= 'Content-Disposition: attachment; filename="billedets_navn.jpg"' . "\n";
$header .= "Content-Transfer-Encoding: base64\n\n" .
            $data . "\n\n";
mail('modtager@domæne.dk', 'emne', '', $header);
Avatar billede d.kryger Praktikant
16. februar 2005 - 11:04 #2
Jeg vil også gerne skrive en tekst...
Avatar billede detox Nybegynder
16. februar 2005 - 11:11 #3
Så skal du lave en 'multipart/mixed' email. Fx:

$besked = 'Din besked til modtageren';
$data = file_get_contents('http://123.456.789.0/billede.jpg');
$data = chunk_split(base64_encode($data));
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$header = "MIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n" .
    " boundary=\"{$mime_boundary}\"\n";
$header .= "--{$mime_boundary}\n" .
            "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
            "Content-Transfer-Encoding: 7bit\n\n" .
            $besked . "\n\n";
$header .= "--{$mime_boundary}\n";
$header .= "Content-type: image/jpeg\n";
$header .= 'Content-Disposition: attachment; filename="billedets_navn.jpg"' . "\n";
$header .= "Content-Transfer-Encoding: base64\n\n" .
            $data . "\n\n";
$header .= "--{$mime_boundary}--\n";
mail('modtager@domæne.dk', 'emne', '', $header);
Avatar billede d.kryger Praktikant
16. februar 2005 - 11:14 #4
Bare for at være "træls", kan man så lave det sådan at jeg kan skrive et navn og e-mail på vedkommende som modtager og afsender e-mail'en?
Avatar billede d.kryger Praktikant
16. februar 2005 - 11:17 #5
Og hvordan kan jeg lave et ny linie i teksten?
Avatar billede detox Nybegynder
16. februar 2005 - 11:18 #6
Det er så almindelig tekst, men du kan naturligvis osse sende den som html (eller begge dele).

Modtagerens navn kan du blot indsætte i mail() delen:

mail('ModtagerNavn<modtager@domæne.dk>', 'emne', '', $header);

Afsenderen kan du styre i din header. Ret fx:

$header = "MIME-Version: 1.0\n" .

til:

$header = "From: Afsender<email@adresse.dk>\n";
$header .= "MIME-Version: 1.0\n" .
Avatar billede detox Nybegynder
16. februar 2005 - 11:20 #7
En ny linje i alm. tekst kan du lave med: "\n"
Avatar billede d.kryger Praktikant
16. februar 2005 - 11:20 #8
Hvordan sender jeg den som html?
Avatar billede detox Nybegynder
16. februar 2005 - 11:23 #9
Fx:

<?php
$besked = '<html><head></head><body>
    <h1>En stor besked</h1>
    <p>Her er<br />
    et par linjer.</p>
    </body></html>';
$data = file_get_contents('http://123.456.789.0/billede.jpg');
$data = chunk_split(base64_encode($data));
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$header = "From: Afsender<email@adresse.dk>\n";
$header .= "MIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n" .
    " boundary=\"{$mime_boundary}\"\n";
$header .= "--{$mime_boundary}\n" .
            "Content-Type: text/html; charset=\"iso-8859-1\"\n" .
            "Content-Transfer-Encoding: 7bit\n\n" .
            $besked . "\n\n";
$header .= "--{$mime_boundary}\n";
$header .= "Content-type: image/png\n";
$header .= 'Content-Disposition: attachment; filename="billede.png"' . "\n";
$header .= "Content-Transfer-Encoding: base64\n\n" .
    $data . "\n\n";
$header .= "--{$mime_boundary}--\n";
mail('ModtagerNavn<modtager@domæne.dk>', 'emne', '', $header);
?>
Avatar billede detox Nybegynder
16. februar 2005 - 11:27 #10
Og du kan tilmed bruge css til at formatere din html. Fx:

$besked = '<html><head>
    <style type="text/css">
    h1 {
        color: red;
    }
    p {
        font: bold medium Verdena;
        color: blue;
    }
    </style>
    </head><body>
    <h1>En stor besked</h1>
    <p>Her er<br />
    et par linjer.</p>
    </body></html>';
Avatar billede d.kryger Praktikant
16. februar 2005 - 11:27 #11
MANGE TAK FOR HJLÆPEN...
Læg et svar og du får fortjent dine point...

Endnu engang tak for den hurtige hjælp...
Avatar billede detox Nybegynder
16. februar 2005 - 11:29 #12
Velbekommen
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