Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie email'a w formie html, a style
Forum PHP.pl > Forum > PHP
tomekp
Witam, nie mam problemu z wysyłaniem emaili, ale zastanawiam się dlaczego nie uwzględnia mi styli w pliku html, kod wygląda następująco:
  1. <?php
  2. include('Mail.php');
  3. include('Mail/mime.php');
  4.  
  5. $message = new Mail_mime();
  6. $text = file_get_contents("mail_text.txt");
  7. $html = file_get_contents("register.html");
  8.  
  9. $message->setTXTBody($text);
  10. $message->setHTMLBody($html);
  11. $body = $message->get();
  12. $extraheaders = array("From"=>"me@example.com", "Subject"=>"My Subject 7");
  13. $headers = $message->headers($extraheaders);
  14.  
  15. $mail = Mail::factory("mail");
  16. $mail->send("adres@email.pl", $headers, $body);
  17. ?>

Plik register.html wyglada następująco:
  1. <style type="text/css">
  2. body {
  3.      font-family: Verdana, Arial, sans-serif;
  4.      margin: 0px;
  5. }
  6.  
  7. td {
  8.      font-family: Verdana, Arial, sans-serif;
  9.      font-size: 11px;
  10. }
  11.  
  12. .link {
  13.      FONT-FAMILY: Verdana, Arial, sans-serif;
  14.      FONT-WEIGHT: bold;
  15.      FONT-SIZE: 11px;
  16.      MARGIN-LEFT: 0px;
  17.      COLOR: #000000;
  18.      TEXT-DECORATION: none;
  19. }
  20.  
  21. a.link:hover {
  22.      COLOR: #000000;
  23.      TEXT-DECORATION: underline;
  24. }
  25. <body background="#FFFFFF">
  26. <table width="700" cellpadding="5" cellspacing="1" border="0">
  27. <tr>
  28. <td width="300" valign="top">
  29. ...[snip]...


Ma ktoś jakiś pomysł dlaczego jest z tym problem?
mike
A gdzie nagłówki, gdzie <doctype>, widziałes na oczy kiedyś poprawny dokumant HTML'a?
tomekp
Tak widziałem to był nie cały plik, w każdym bądź razie zrobiłem to troche inaczej i śmiga.
robos85
możesz napisać jak ?
Teoria
Witam,

to jest temat sprzed 4 lat, jednak chciałbym go odświeżyć, gdyż rozwiązanie problemu nie zostało upublicznione, a mam sądzę że mam ten sam problem co kolega wyżej.

Więc, chcę wysyłać wiadomości email w formacie html

Przesyłany dokument wygląda mniej więcej tak:
  1. <html>
  2. <head>
  3. <style>
  4. styl1
  5. {
  6. atrybut:wartość;
  7. itd...
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <div class="styl1"></div>
  13. </body>
  14. </html>


Jednak to nie działa. tag <style> jest pomijany, toteż parametry class="style1" również. By działało powinno to wyglądać tak:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <div style="atrybut:wartość;itd..."></div>
  6. </body>
  7. </html>

Dokument jest generowany domyślnie na sposób nr.1 (czyli tak bardziej poprawnie). Jednak, by np. Gmail odczytał go w pełni poprawnie, musiałby być użyty sposób nr. 2.

Mam pomysł jak to zrobić (parsowanie, wrzucenie stylów do tablicy, str_rep) - jednak zajęło by to kilka godzin, i kieruję się zasadą: "Nie wynajduj koła, skoro już to ktoś zrobił".

I pytanie do was: czy znacie klasy / proste sposoby które przemielą kod nr.1 na kod nr. 2.



EDIT:

Zawsze jak człowiek poprosi o pomoc, to po niedługim czasie coś znajdzie.
Nie jest to rozwiązanie [mojego] problemu, jednak będzie pomocne dla innych pokoleń winksmiley.jpg

http://novasoftware.pl/Articles/ListWithDetail/15 - kilka wskazówek dot. wiadomości email typu text/html

http://inlinestyler.torchboxapps.com/ - sam skrypt. Jest on typu online, nie można go pobrać, co nie rozwiązuje mojego problemu, ponieważ dane które muszę mielić są poufne, i nie mogę pozwolić sobie na korzystanie z zewnętrznych skryptów, więc mój problem wciąż istnieje.

EDIT 2:
Sam z sobą rozmawiam, ale temat jest już wyczerpany:

http://www.pelagodesign.com/sidecar/emogrifier/ - źródło do pobrania, nie testowałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.