Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Potrzebny UTF-8/HTML w powiadomieniu na email
enimatto
post 31.07.2010, 20:31:53
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 31.07.2010

Ostrzeżenie: (0%)
-----


Witam, mam problem z implementacją UTF-8/HTML do tego skryptu ponizej. Probowalem wiele sposobow, pare mixow ze zwyklymi formularzami (ktore dzialaja prawidlowo) ale niestety bez skutku. Gdzies robie jakis blad.
Skrypt ten przez cron'a co jakis czas wysyla raport na emaila o zblizajacych sie zadaniach. Funkcjonuje prawidlowo, ale te krzaki mnie przerazaja - zero polskich znakow. Ma ktos jakis pomysl? Z gory dzieki.

  1. <?php
  2.  
  3. $user="test";
  4. $password="test";
  5. $database="test";
  6. mysql_connect('localhost',$user,$password);
  7.  
  8. mysql_select_db($database) or die( "Unable to select database");
  9. #echo mysql_query("SET AUTOCOMMIT=0")?'':(mysql_error() . "\n");
  10. #echo mysql_query("START TRANSACTION")?'':(mysql_error() . "\n");
  11.  
  12. $query = "
  13. SELECT frk_item.title,
  14. frk_item.deadlineDate,
  15. CASE
  16. WHEN (deadlineDate <= date_add(now(), INTERVAL 5 day) )
  17. THEN 'critical'
  18. ELSE 'coming due'
  19. END critical
  20. FROM frk_item,
  21. frk_member
  22. WHERE 1 = 1
  23. AND deadlineDate <= date_add(now(), INTERVAL 10 day)
  24. AND frk_item.memberId = frk_member.memberId
  25. AND frk_member.email = 'mail@mail.pl'
  26. ORDER BY deadlineDate;";
  27.  
  28. $result = mysql_query($query);
  29. if (!$result)
  30. {
  31. $errors[] = "mysql query failed: " . mysql_error();
  32. $errors[] = $query;
  33. # echo "mysql query failed: " . mysql_error() . "\n";
  34. }
  35. else
  36. {
  37.  
  38.  
  39. $email = $email . "ĄĆĘŻŹ \n\n";
  40. $importance = '';
  41.  
  42.  
  43. while ($row = mysql_fetch_assoc($result))
  44. {
  45. if ($row['critical'] == 'critical')
  46. {
  47. $importance = "Importance: High\n";
  48. }
  49.  
  50. $email = $email . $row['deadlineDate'] . ' - ' . $row['title'] . "\n";
  51. }
  52.  
  53. mail ("mail@mail.pl", "Zadania", $email,
  54. $importance . "From: mail@mail.pl\n");
  55.  
  56. }
  57.  
  58. echo mysql_query("commit")?'':(mysql_error() . "\n");
  59.  
  60. ?>
Go to the top of the page
+Quote Post
krzysztof_kf
post 31.07.2010, 20:44:11
Post #2





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Dodać zaraz po połączeniu z bazą danych sposób kodowania polskich znaków .

  1. mysql_query('SET NAMES "utf8"');



Lub z tego skorzystaj

http://forum.php.pl/Wyszukiwarka.html?cx=p...;sa=Szukaj#1168

Ten post edytował krzysztof_kf 31.07.2010, 20:51:45
Go to the top of the page
+Quote Post
enimatto
post 31.07.2010, 22:48:05
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 31.07.2010

Ostrzeżenie: (0%)
-----


Pokombinowalem i mam cos takiego:

  1. <?php
  2. $user="test";
  3. $password="test";
  4. $database="test";
  5. mysql_connect('localhost',$user,$password);
  6.  
  7. mysql_query('SET NAMES "utf8"');
  8.  
  9. mysql_select_db($database) or die( "Unable to select database");
  10. #echo mysql_query("SET AUTOCOMMIT=0")?'':(mysql_error() . "\n");
  11. #echo mysql_query("START TRANSACTION")?'':(mysql_error() . "\n");
  12.  
  13. $query = "
  14. SELECT frk_item.title,
  15. frk_item.deadlineDate,
  16. CASE
  17. WHEN (deadlineDate <= date_add(now(), INTERVAL 5 day) )
  18. THEN 'critical'
  19. ELSE 'coming due'
  20. END critical
  21. FROM frk_item,
  22. frk_member
  23. WHERE 1 = 1
  24. AND deadlineDate <= date_add(now(), INTERVAL 10 day)
  25. AND frk_item.memberId = frk_member.memberId
  26. AND frk_member.email = 'mail@mail.pl'
  27. ORDER BY deadlineDate;";
  28.  
  29. $result = mysql_query($query);
  30. if (!$result)
  31. {
  32. $errors[] = "mysql query failed: " . mysql_error();
  33. $errors[] = $query;
  34. # echo "mysql query failed: " . mysql_error() . "\n";
  35. }
  36. else
  37. {
  38.  
  39.  
  40. $to = "mail@mail.pl";
  41.  
  42. $subject = "Lista zadań";
  43.  
  44. $message = $message . '<html>'.
  45. '<head>'.
  46. '<style type="text/css">'.
  47. '#red {color:red;}'.
  48. '</style>'.
  49. '</head>'.
  50. '<body>'.
  51. '<p id="red">Lista zadań:&nbsp;&nbsp;'.'</p>'.
  52. '</body>'.
  53. '</html>';
  54. $importance = '';
  55.  
  56. while ($row = mysql_fetch_assoc($result))
  57. {
  58. if ($row['critical'] == 'critical')
  59. {
  60. $importance = "Importance: High\n";
  61.  
  62. }
  63.  
  64. $message = $message . $row['deadlineDate'] . ' - ' . $row['title'] . "\n";
  65. }
  66.  
  67. $headers = "MIME-Version: 1.0\r\n";
  68. $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  69.  
  70. mail ( $to, $subject, $message, $headers );
  71.  
  72. }
  73.  
  74. echo mysql_query("commit")?'':(mysql_error() . "\n");
  75.  
  76. ?>

Z tym powyzszym skryptem mam polskie znaki, ale bez wyników z bazy, bo odpowiada za to parametr: $importance

Jak go probuje dodac, czyli:
  1. mail ( $to, $subject, $message, $importance, $headers );

email w ogole nie dochodzi.

Z kolei wiadomo ze jak nie dodam $headers, to nici z polskich znakow.
Utknalem.... jak to przekombinowac?
Go to the top of the page
+Quote Post
krzysztof_kf
post 31.07.2010, 22:56:06
Post #4





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

Ostrzeżenie: (0%)
-----


zmień na


  1.  
  2. @mail("adres@domena.pl","Wiadomosc ze strony WWW","$to","$subject","$message","$importance","$headers");
Go to the top of the page
+Quote Post
enimatto
post 31.07.2010, 23:09:06
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 31.07.2010

Ostrzeżenie: (0%)
-----


Zamienilem i dalej glucho, email milczy.
Bez '@' z przodu tez probowalem, i mamy wtedy: Warning: mail() expects at most 5 parameters, 7 given in...
sad.gif Cos tu sie gryzie ale co?
Go to the top of the page
+Quote Post
krzysztof_kf
post 31.07.2010, 23:12:05
Post #6





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Hmmm robisz to na localhost ? masz skonfigurowanego klienta pocztowego .
Go to the top of the page
+Quote Post
enimatto
post 31.07.2010, 23:20:16
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 31.07.2010

Ostrzeżenie: (0%)
-----


Tak, na localhost. Klient skonfigurowany poprawnie, bo jak tylko wyrzuce $headers i dam za to "$importance", to dane dochodza - tylko bez poprawnego kodowania. Jak z kolei zrobie na odwrot, to email dochodzi z polskimi znakami - ale bez danych z bazy. A jak dam wszystkie 5 elementow: mail ( $to, $subject, $message, $importance, $headers ); to na skrzynke w ogole nic dochodzi.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:20