Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]mail()
Forum PHP.pl > Forum > Przedszkole
maxis88
Wiem, że była masa takich tematow ale przeglądałem wszystkie, starałem się dostosować do wskazówek ale nadal w outlooku wyświetla mi się wszystko wraz ze znacznikami HTML i nie wiem z jakiego to powodu ... mój kod jest taki:
  1. $headers = "MIME-Version: 1.0\n";
  2.  
  3. $headers .= "Content-type: text/html; charset=ISO-8859-2\n";
  4.  
  5.  
  6.  
  7. $wiadomosc="<html>
  8. <head></head>
  9. <body>
  10.  
  11. ".raport_dzienny()."
  12.  
  13. </body>
  14.  
  15. </html>";
  16.  
  17. if(mail($_POST['email'], "Raport dzienny", $wiadomosc, $headers)){
  18. echo"<br />Wyslano raport!<br />";
  19. }


więc w czym tkwi błąd ?
cros
  1. <?
  2. $wiadomosc = htmlspecialchars_decode($wiadomosc);
  3. ?>
questionmark.gif?
maxis88
nadal to samo ...
cros
Cytat(maxis88 @ 1.05.2010, 22:27:08 ) *
nadal to samo ...

Pokaz kod tej funkcji raportdzienny();
Mam nadzieje ze ta linijke, ktora ci podalem, dodales dopiero po przypisaniu tresci maila do zmiennej.
maxis88
  1. function raport_dzienny(){
  2.  
  3. if($_POST['dzien']<10){$dzien="0".$_POST['dzien'];}else{$dzien=$_POST['dzien'];}
  4. if($_POST['miesiac']<10){$miesiac="0".$_POST['miesiac'];}else{$miesiac=$_POST['miesiac'];}
  5. $data="$dzien/$miesiac/".$_POST['rok'];
  6. $dat=explode(" ", $data);
  7.  
  8. db_connect();
  9. $zaznacz=mysql_query("SELECT zakupy.klient, zakupy.ilosc, zakupy.zakup,
  10. produkty.nazwa, produkty.cena FROM zakupy LEFT JOIN produkty ON
  11. zakupy.towar=produkty.id WHERE zakupy.status='Przekazano' ORDER BY zakupy.klient");
  12.  
  13.  
  14. $wiadomosc="";
  15. $suma=0;
  16. while($pokaz=mysql_fetch_row($zaznacz)){
  17. $zaznacz_uzytkownika=mysql_query("SELECT imie, nazwisko FROM users WHERE nick='$pokaz[0]'");
  18. $pokaz_uzytkownika=mysql_fetch_row($zaznacz_uzytkownika);
  19. if($pokaz[0]!=$_POST['ostatni']){
  20. if($suma!=0){$wiadomosc.="<tr><td colspan=2 style='color:green; text-align:center'>
  21. W sumie do zapłaty $suma</td></tr></table>";}
  22. $wiadomosc.="<table border=0 style='font-size:14; margin-bottom:10;
  23. margin-top:10;
  24. border-width:1px; border-style:solid' width='50%' align=center>
  25. <caption style='background-color:white'><i>$pokaz_uzytkownika[0]
  26. $pokaz_uzytkownika[1]</i> <b>[$pokaz[0]]</b> zamówił:</caption><tr>";
  27. $suma=0;}
  28. else{$wiadomosc.="<tr>";}
  29.  
  30. $wiadomosc.="<td><i>$pokaz[1] sztuk</i> \"<u>$pokaz[3]</u>\"</td>
  31. <td><i>W dniu $pokaz[2]</i></td>
  32.  
  33. </tr>";
  34. $_POST['ostatni']=$pokaz[0];
  35. $suma+=$pokaz[1]*$pokaz[4];
  36. }
  37.  
  38. if($suma!=0){$wiadomosc.="<tr><td colspan=2 style='color:green; text-align:center'>
  39. W sumie do zapłaty $suma</td></tr></table>";}
  40.  
  41. return "$wiadomosc";
  42. }



  1. $headers = "MIME-Version: 1.0\n";
  2.  
  3. $headers .= "Content-type: text/html; charset=ISO-8859-2\n";
  4.  
  5.  
  6.  
  7. $wiadomosc="<html>
  8. <head></head>
  9. <body>
  10.  
  11. ".raport_dzienny()."
  12.  
  13. </body>
  14.  
  15. </html>";
  16.  
  17. $wiadomosc = htmlspecialchars_decode($wiadomosc);
  18. if(mail($_POST['email'], "Raport dzienny", $wiadomosc, $headers)){
  19. echo"<br />Wyslano raport!<br />";
  20. }



wiem że funkcja trochę chaotycznie zrobiona ale nad jej wydajnością popracuję później... poki co chciałbym tylko żeby wyświetlało się w mailu wszystko jak trzeba ...
cros
dodaj jeszcze to przed htmlspecialchars
Kod
$zmienna = stripslashes($zmienna);

i sproboj zwracac zmienna bez "", tzn return $zmienna, zamiast return "$zmienna";
maxis88
  1. $headers = "MIME-Version: 1.0\n";
  2.  
  3. $headers .= "Content-type: text/html; charset=ISO-8859-2\n";
  4.  
  5.  
  6.  
  7. $wiadomosc="<html>
  8. <head></head>
  9. <body>
  10.  
  11. ".raport_dzienny()."
  12.  
  13. </body>
  14.  
  15. </html>";
  16. $wiadomosc = stripslashes($wiadomosc);
  17. $wiadomosc = htmlspecialchars_decode($wiadomosc);
  18. if(mail($_POST['email'], "Raport dzienny", $wiadomosc, $headers)){
  19. echo"<br />Wyslano raport!<br />";
  20. }


nie wiem czy dobrze zrozumiałem, ale jesli miało byc tak jak powyżej to nadal nie dziala ...

EDIT: "return" w funkcji tez poprawione
cros
a wez wpisz w tresc maila np "<b>pogrubiony</b> tekst" i wyslij, jesli nadal bedzie widac tagi, to moze masz w outlooku wylaczony html?
Sprawdz to, a jesli bedzie ok, tzn ze cos jednak w kodzi, ja dzisiaj juz ci nie pomoge, bo mam pustke w glowie :/
maxis88
  1. <b>pogrubiony</b>
też nie działa jak powinno ... w ustawieniach outlooka sprawdzałem i raczej nic nie powinno blokować wyświetlania wiadomości w HTML'u ... poza tym jak mi przychodzi SPAM to często właśnie w HTML'u ... i jedynie obrazki się blokują ale ja nic takiego nie mam ...

EDIT: jak wejdę na pocztę poprzez stronę www to wszystko wyświetla się ok ...
cros
Cytat(maxis88 @ 1.05.2010, 23:04:10 ) *
  1. <b>pogrubiony</b>
też nie działa jak powinno ... w ustawieniach outlooka sprawdzałem i raczej nic nie powinno blokować wyświetlania wiadomości w HTML'u ... poza tym jak mi przychodzi SPAM to często właśnie w HTML'u ... i jedynie obrazki się blokują ale ja nic takiego nie mam ...

EDIT: jak wejdę na pocztę poprzez stronę www to wszystko wyświetla się ok ...

No to raczej wina outlooka.
Proponuje jednak zostawic w kodzie te funkcje htmlspecialchars i stripslashes, bo to nie przeszkodzi, a moze pomoc.
Pogrzeb w ustawieniach, choc dziwne, ze inne maile sa html.
Sprawdz w tych mailach (spamowych), jakiego naglowka uzywaja i sam uzywaj takiego, chociaz ten twoj jest dobry.
maxis88
sprawdzalem też w thunderbirdzie i też wyświetla mi tagi ;/ już nie wiem co jest z tym nie tak ... a najgorsze są własnie takie błahe rzeczy ...
Daniel Meger
Otwórz mejle wraz ze wszystkimi nagłówkami:
a) jakiś co poprawnie się wyświetla
b) ten z Twojego skryptu

i je porównaj.

Prawdopodobnie Outlook wymaga czegoś jeszcze w nagłówku.
maxis88
a tak wgl to on powinien w wiadomosci wyswietlac naglowki ? bo wydaje mi sie ze nie ... moze jednak w naglowkach cos jest nie tak ...
cros
Cytat(maxis88 @ 2.05.2010, 09:56:23 ) *
a tak wgl to on powinien w wiadomosci wyswietlac naglowki ? bo wydaje mi sie ze nie ... moze jednak w naglowkach cos jest nie tak ...

Nie powinien, naglowki wyswietla dopiero po wejsciu we wlasciwosci danego maila.
Sprawdzalem te naglowki i sa dobre, chyba ze slepy jestem winksmiley.jpg
Dziwna sprawa i mnie chyba przerosla, wiec niech sie wypowie ktos madrzejszy ode mnie smile.gif

EDIT:
Pozniej skopiuje ten Twoj skrypt i przetestuje u siebie, oczywiscie polacze sie z wlasna baza sql i zobaczymy jakie maile bedzie mi wysylal.
Odezwe sie jak to zrobie.

EDIT 2:
No i sprawdzilem, wynik:
Wszystko pieknie wyswietlone w HTMLu, zarowno na poczcie przez www, jak i w outlooku 2007.
maxis88
no nic ... dzięki cros za chęci pomocy ... skoro działa to najważniejsze ...
Daniel Meger
spróbuj
  1. $headers = "MIME-Version: 1.0\r\n";
  2. $headers .= "Content-type: text/html; charset=iso-8859-2\r\n";



czemu? nie wiem winksmiley.jpg ale tak jest w manualu winksmiley.jpg
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.