Avatar billede michaeltryl Seniormester
30. august 2006 - 19:00 Der er 18 kommentarer og
2 løsninger

style en mail

vil mene dette er den rigtige kategori.
hvordan kan jeg bruge min css filer på mails som jeg sender via php.
jeg har nogen formulare på min side som bliver sendt til mig, men også til brugere og jeg ønsker at bruge min css filer til at style disse mails hvis det er muligt.
jeg har fundet ud af at gøre sådan jeg kan skriv html koder ind og style den vej, men kunne godt tænke mig hvis det andet er muligt
Avatar billede keysersoze Ekspert
30. august 2006 - 19:07 #1
hvis du henviser til din css på normal vis men bare angiver hvilket domæne den ligger på (eks http://www.domain.dk/style.css) så vil det fungere som var man inde på en hjememside. Alternativt må du skrive det fulde css ind i head.
Avatar billede michaeltryl Seniormester
30. august 2006 - 19:23 #2
du mener henviser til den i head delen af mailen
f.eks sådan her

$besked = "<h3>test besked</h3>";
   
    $header  = "MIME-Version: 1.0" . "\r\n";
    $header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
        $header .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/generelt-style.css' type='text/css'>";
    $header .= "from:$email";

    mail($til, $emne, $besked, $header);
Avatar billede keysersoze Ekspert
30. august 2006 - 19:43 #3
ja
Avatar billede michaeltryl Seniormester
30. august 2006 - 19:45 #4
okay det vil jeg da lige prøve engang her i aften
Avatar billede michaeltryl Seniormester
31. august 2006 - 09:43 #5
jeg har nu prøvet det og det virker også fint, men der er et problem
min header ser sådan ud
    $header  = "MIME-Version: 1.0" . "\r\n";
    $header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
    $header .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/generelt-style.css' type='text/css'>";
$header .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/link-style.css' type='text/css'>";
$header .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tabel-style.css' type='text/css'>";
$header .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tekst-style.css' type='text/css'>";
    $header .= "from=$minmail";

men i den mail som kommer er $minmail skrevet i selve mailen og ikke i fra feltet hvad kan der være galt?
Avatar billede keysersoze Ekspert
31. august 2006 - 09:59 #6
lige præcis den del kan jeg ikke svare på - er ikke den store php-haj.
Avatar billede fixxxer Nybegynder
31. august 2006 - 10:03 #7
Jeg undrer mig over hvordan du kan få ovenstående til at virke ?-)

Mailheaders og en HTML head er to vidt forskellige ting - i virkeligheden burde enhver mailserver kløjs i et forsøg på at forstå dine mailheaders.

Hvis du vil sende HTML mails med mail() funktionen i PHP, bør sende den som sådan:


        $subject     =  'Michaels Mail';
        $boundary = uniqid("");
        $body    = array();
        $sender = "michael@magiske-michael.dk";
        $recip = "enelleranden@enhost.dk";

        $header[] = "MIME-Version: 1.0";
        $header[] = "Message-ID: <".md5($sender).uniqid('')."@magiske-michael.dk>";
        $header[] = "Content-Type: multipart/related; boundary=\"$boundary\"";
        $header[] = "Content-Transfer-Encoding: 7bit";
        $header[] = "From: Michael <$sender>";
        $header[] = "To: ".$recip;
        $header[] = "Reply-To: $sender";
        $header[] = 'X-Mailer: PHP/' . phpversion();


        $body[] = "--$boundary";
        $body[] = "Content-Type: text/html; charset=\"iso-8859-1\"";
        $body[] = "Content-Transfer-Encoding: 7bit";
        $body[] = '';
        $body[] = $htmltext; // din variabel med dit html indhold. Evt. kan du læse indholdet med file_get_contents()


        mail($recip, $subject, join("\n", $body),join("\n", $header));


Det giver dig bl.a. også mulighed for inkludere grafik, stylesheets m.m direkte i mailen, samt en plain-text udgave af din mail, til klienter der ikke tillader HTML.
Avatar billede michaeltryl Seniormester
31. august 2006 - 10:06 #8
hvordan kan jeg includere stylesheets direkte i min mail?

jeg fandt løsningen på at kunne bruge html i php mails et eller andet sted på nettet og fungere fint også med stylesheets.
men vil da prøve din løsning
Avatar billede michaeltryl Seniormester
31. august 2006 - 10:07 #9
keysersoze vil du smide et svar så får du del i point når jeg lukker her
Avatar billede michaeltryl Seniormester
31. august 2006 - 10:12 #10
jeg har lige nogle spørgsmål til dit første indlæg fixxxer
        $boundary = uniqid("");
        $body    = array();
     
        $header[] = "Message-ID: <".md5($sender).uniqid('')."@magiske-michael.dk>";
        $header[] = "Content-Type: multipart/related; boundary=\"$boundary\"";
        $header[] = 'X-Mailer: PHP/' . phpversion();

        $body[] = "--$boundary";
        $body[] = $htmltext; // din variabel med dit html indhold. Evt. kan du læse indholdet med file_get_contents()

vil du give en lille forklaring på de linie jeg har listet herover
i den sidste linie er det kun, file_get_contents(), jeg ikke forstår
Avatar billede keysersoze Ekspert
31. august 2006 - 10:29 #11
svar :)
Avatar billede fixxxer Nybegynder
31. august 2006 - 10:42 #12
Hvis den HTML du vil maile ligger i en flad HTML fil på serveren kan du læse hele den fil ind i en variabel med file_get_contents()

$htmltext = file_get_contents('htmlmail.html');

Det bliver straks lidt mere omstændigt hvis der er tale om et php script der skal rendere noget dynamisk indhold. Min løsning var simpelthen at skrive hele HTML-mailen i een stor variabel:

$htmltext = '<html><head>';
$htmltext = '<link rel='stylesheet' href="http://www.magiske-michael.dk/styles/generelt-style.css" type="text/css">';
$htmltext = '</head><body>';
$htmltext = 'Noget html body';
$htmltext = '</body></html>';


Det er et meget crude eksempel, men det skulle vise hvordan du skulle gribe tingene an..
Avatar billede michaeltryl Seniormester
31. august 2006 - 10:47 #13
okay det vil jeg prøve.
du skriver at jeg på den måde der har mulighed for at sende en
plain-text udgave af din mail, til klienter der ikke tillader HTML
skal jeg så lave en variabel som hedder $plain-text="bla bla bla"; eller vil html mailen automatisk blive vist som plain text?
Avatar billede fixxxer Nybegynder
31. august 2006 - 10:58 #14
Om html mailen automatisk bliver "omskrevet" til flad tekst afhænger af klienten..

Men for at sende en plaintext udgave med, så har du blot to "body" dele..

        $body[] = "--$boundary";
        $body[] = "Content-Type: text/html; charset=\"iso-8859-1\"";
        $body[] = "Content-Transfer-Encoding: 7bit";
        $body[] = '';
        $body[] = $htmltext;

        $body[] = "--$boundary";
        $body[] = "Content-Type: text/plain";
        $body[] = "Content-Transfer-Encoding: 7bit";
        $body[] = '';
        $body[] = $plaintext;


Resten tager det opringelige script højde for..
Avatar billede michaeltryl Seniormester
31. august 2006 - 11:13 #15
jeg har nu prøvet dette, men jeg modtager en blank mail jeg har også prøvet at skifte
$besked ud med file_get_contents('testmail.html');, men der får jeg også en blank mail

    $email     = $_POST["email"];
        $subject    =  'Find Magiske Michael i Århus festuge';
        $boundary = uniqid("");
        $body    = array();
        $sender = "michael@magiske-michael.dk";
 
        $header[] = "MIME-Version: 1.0";
        $header[] = "Message-ID: <".md5($sender).uniqid('')."@magiske-michael.dk>";
        $header[] = "Content-Type: multipart/related; boundary=\"$boundary\"";
        $header[] = "Content-Transfer-Encoding: 7bit";
        $header[] = "From: Michael <$sender>";
        $header[] = "To: ".$email;
        $header[] = "Reply-To: $sender";
        $header[] = 'X-Mailer: PHP/' . phpversion();


        $body[] = "--$boundary";
        $body[] = "Content-Type: text/html; charset=\"iso-8859-1\"";
        $body[] = "Content-Transfer-Encoding: 7bit";
        $body[] = '';
        $body[] = $besked; // din variabel med dit html indhold. Evt. kan du læse indholdet med file_get_contents()

               
    $besked  = "<html><head>";
    $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/generelt-style.css' type='text/css'>";
    $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/link-style.css' type='text/css'>";
    $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tabel-style.css' type='text/css'>";
    $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tekst-style.css' type='text/css'>";
    $besked .= '</head><body>';
    $besked .= 'Noget html body';
    $besked    .= "<h4><u>4. til 9. september</u><br>";
    $besked .= "Jeg vil nogen af dagen være at finde på Store torv hvor jeg ";
    $besked .= "vil gå rundt og lave lidt trylleri for folk som har lyst til ";
    $besked .= "at opleve lidt trylleri på tæt hold.<br><br>";
    $besked .= "<u>5. September Kl. 20:00</u><br>";
    $besked .= "Jeg optræder i cafe Eurolife, Mejlgade 44, 800 Århus C. Der ";
    $besked .= "er gratis adgang for alle<br>";
    $besked .= "Showet henvender sig til personer fra 14 år og op<br><br>";
    $besked .= "<u>9. September</u><br>";
    $besked .= "Jeg går rundt på store torv sammen med andre medlemmer fra ";
    $besked .= "Magisk Club Århus.<br>";
    $besked .= "Mød op og få en magisk oplevelse<br><br>";
    $besked .= "<u>10. September kl. 14:30</u><br>";
    $besked .= "Jeg optræder i Botanisk have ved Amfiscenen<br>";
    $besked .= "Showet henvender sig til personer mellem 4 og 12 år, men ";
    $besked .= "alle er velkomne til at kigge på<br></h4>";
    $besked .= '</body></html>';

       
       
       
        mail($email, $subject, join("\n", $body),join("\n", $header));
Avatar billede fixxxer Nybegynder
31. august 2006 - 11:16 #16
Rækkefølge er alt afgørende !-)


        $email    = $_POST["email"];
        $subject    =  'Find Magiske Michael i Århus festuge';
        $boundary = uniqid("");
        $body    = array();
        $sender = "michael@magiske-michael.dk";

        $header[] = "MIME-Version: 1.0";
        $header[] = "Message-ID: <".md5($sender).uniqid('')."@magiske-michael.dk>";
        $header[] = "Content-Type: multipart/related; boundary=\"$boundary\"";
        $header[] = "Content-Transfer-Encoding: 7bit";
        $header[] = "From: Michael <$sender>";
        $header[] = "To: ".$email;
        $header[] = "Reply-To: $sender";
        $header[] = 'X-Mailer: PHP/' . phpversion();


        $besked  = "<html><head>";
        $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/generelt-style.css' type='text/css'>";
        $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/link-style.css' type='text/css'>";
        $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tabel-style.css' type='text/css'>";
        $besked .= "<link rel='stylesheet' href='http://www.magiske-michael.dk/styles/tekst-style.css' type='text/css'>";
        $besked .= '</head><body>';
        $besked .= 'Noget html body';
        $besked    .= "<h4><u>4. til 9. september</u><br>";
      $besked .= "Jeg vil nogen af dagen være at finde på Store torv hvor jeg ";
        $besked .= "vil gå rundt og lave lidt trylleri for folk som har lyst til ";
        $besked .= "at opleve lidt trylleri på tæt hold.<br><br>";
        $besked .= "<u>5. September Kl. 20:00</u><br>";
        $besked .= "Jeg optræder i cafe Eurolife, Mejlgade 44, 800 Århus C. Der ";
        $besked .= "er gratis adgang for alle<br>";
        $besked .= "Showet henvender sig til personer fra 14 år og op<br><br>";
        $besked .= "<u>9. September</u><br>";
        $besked .= "Jeg går rundt på store torv sammen med andre medlemmer fra ";
        $besked .= "Magisk Club Århus.<br>";
        $besked .= "Mød op og få en magisk oplevelse<br><br>";
        $besked .= "<u>10. September kl. 14:30</u><br>";
        $besked .= "Jeg optræder i Botanisk have ved Amfiscenen<br>";
        $besked .= "Showet henvender sig til personer mellem 4 og 12 år, men ";
        $besked .= "alle er velkomne til at kigge på<br></h4>";
        $besked .= '</body></html>';


        $body[] = "--$boundary";
        $body[] = "Content-Type: text/html; charset=\"iso-8859-1\"";
        $body[] = "Content-Transfer-Encoding: 7bit";
        $body[] = '';
        $body[] = $besked; // din variabel med dit html indhold. Evt. kan du læse indholdet med file_get_contents()     
     
        mail($email, $subject, join("\n", $body),join("\n", $header));
Avatar billede michaeltryl Seniormester
31. august 2006 - 11:37 #17
ja det kunne jeg jo have sagt mig selv :-)
nu virker det men hvis jeg øverst tilføjer

$minmail = "webmaster@magiske-michael.dk";

og under den første mail()

mail($minmail, $emne, "<h2>email feltet på siden om festugen er blevet udfyldt</h2>", $header);

kommer denne fejl
Warning: mail() expects parameter 4 to be string, array given in /home/www/magiske-michael.dk/prove/festuge.php on line 138

hvor linie 138 er denne

mail($minmail, $emne, "<h2>email feltet på siden om festugen er blevet udfyldt</h2>", $header);
Avatar billede fixxxer Nybegynder
31. august 2006 - 13:29 #18
Læg mærke til hvad scriptet ovenfor gør ved mail() funktionen:

        mail($email, $subject, join("\n", $body),join("\n", $header));

$header og $body er array variabler, og det forstår funtionen mail() ikke. Derfor bruges join() til at sammenlægge arrayet til en streng adskilt med \n

Derfor skal du, hvis du bruger samme header variabel, gøre således:

mail($minmail, $emne, "<h2>email feltet på siden om festugen er blevet udfyldt</h2>", join("\n", $header));

Vil du sende en mail blot med indholdet "email feltet på siden om festugen er blevet udfyldt" ?
Avatar billede michaeltryl Seniormester
31. august 2006 - 13:44 #19
okay tak for det smid et svar så får du point.
det er for at tjekke om det er noget brugeren af siden vil bruge ellers vil jeg ikke sætte det op en anden gang.
Avatar billede fixxxer Nybegynder
31. august 2006 - 13:51 #20
svar
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