Witam,
mam taki problem:

używam phpmailera do wysyłania raportów z bazy (mysql)

W skrypcie wysyłki maila mam taki m.in. taki kod:

  1. $result = mysql_query("SELECT * FROM `main` where erased=0 AND operator=".$Lp." AND KartaBHP=0 order by LastName") or die(mysql_error());
  2.  
  3. if (mysql_num_rows($result) > 0){
  4.  
  5. $HtmlBody = $HtmlBody."<table style='border-spacing:1px;border-width=1px;background-color:#000000;empty-cells: show;'>";
  6.  
  7. while($s = mysql_fetch_object($result)) {
  8.  
  9. $HtmlBody = $HtmlBody."<tr id='' style='background-color:#FFFFFF;'>";
  10. $HtmlBody = $HtmlBody."<td style='width:100px;'>".$s->LastName."</td>";
  11. $HtmlBody = $HtmlBody."<td style='width:100px;'>".$s->FirstName."</td>";
  12. $HtmlBody = $HtmlBody."<td style='width:100px;'> BRAK karty BHP </td>";
  13. $HtmlBody = $HtmlBody."</tr>";
  14.  
  15. }
  16.  
  17. $HtmlBody = $HtmlBody."</table></br></br></br>";
  18. }


Problem polega na tym, że w niektórych mailach otrzymuję tabelkę gdzie w 3 kolumnie mam "BRAK karty B HP" albo "BRAK karty BH P" zamiast "BRAK karty BHP".

Jeśli tabelka składa sie np. z 10 rekordów to taki błąd pojawia się nie w całej tabelce, a w jednym rekordzie. Przy wysłaniu ponownie tego samego raportu błąd się nie powtarza, ale za to pojawi się w innym mailu (lub wcale wink.gif ).

Ciekawe, tym bardziej, że przecież wysyłam czysty tekst, który widzicie, a nie podstawiam żadnej zmiennej...

dlaczego tak się dzieje?

z góry dziękuję za pomoc.



------------------------------------------------------



SOLVED

Mój skrypt:
1. Wyciągał listę maili z bazy (MySQL)
2. na podstawie tej listy stworzona została pętla w której za każdym razem tworzony był kod dla phpmailera i wysyłany za jego pomocą mail
3. każdy mail to był raport złożony z 4 tabel generowanych przez 4 kolejne zapytania do bazy (jedno z tych zapytań w poście powyżej)


Problem:
phpmailer dodawał sobie białe znaki w dowolnym (prawie dowolnym) miejscu maila przez co albo w tekscie (danych) były odstępy w srodku wyrazu albo w kodzie co powodowało np. rozjechanie się tabeli i głupoty na ekranie

Co Zauwazyłem:
każdy raport wyglądał zawsze tak samo tzn. bez zmian w kodzie,biały znak występował zawsze w tym samym miejscu. Jeśli zmieniłem np. w stylach szerokość komórki ze 100px na 90px (czyli zmieniłem długość ciągu $HtmlBody), to wtdy biały znak zaczął występowac w innym miejscu i tak do kolejnej zmiany kodu. (Dlatego "prawie" dowolne miejsce występowania wink.gif )


Rozwiązanie:
  1.  
  2. $mail->Encoding="base64";
  3.  

http://www.jeremytunnell.com/posts/really-...erted-in-emails

Mam nadzieję , że komuś pomogę wink.gif