Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Funkcja mail - brak polskich ogonków
brzanek
post
Post #1





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Witam kombinowałem już ze wszystkim i nadal mam problem z polskimi ogonkami przy wysyłaniu emaili
mam taki kod
  1. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tmm AND wprecipIntensity BETWEEN 10 AND 20");
  2. while($row = mysqli_fetch_array($result)) {
  3. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl")){
  4. echo 'Wiadomość została wysłana.';
  5. } else {
  6. echo 'Błąd przy wysyłaniu wiadomości.';
  7. }
  8. }

Zamiast miejscowość wysyłane jest miejscowoĹ›ci to samo jest z są.
Do kodu dodawałem już Content-type: text/html; charset=utf-8 nic to nie dawało.
Nawet w bazie danych dodałem kolumnę ze słowem miejscowości i nadal były krzaki. Zmieniałem kodowanie na UTF-8 oraz na UTF-8 bez BOM nadal nic.
Skończyły mi się już pomysły. Może komuś przyjdzie coś do głowy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Neutral
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Ustaw header w PHP na taki:

  1. header('Content-type: text/html; charset=utf-8');


https://www.w3.org/International/articles/http-charset/index

Sprawdź kodowanie odpowiednie i w bazie i np. konsoli Windows, jeśli jesteś na systemie Windows.

Jeśli po zmianie kodowania w bazie i w konsoli nadal będą się pojawiać nieprawidłowe znaki, to zaoraj bazę utwórz nową i nowe tabele - nie importuj, na nowo utwórz i sprawdź.

https://www.youtube.com/watch?v=9SnZMDONhFU

Ten post edytował Neutral 3.07.2019, 20:34:36
Go to the top of the page
+Quote Post
brzanek
post
Post #3





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Witam ponownie niestety te wskazówki nie pomogły. Nadal brakuje polskich ogonków.
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Pokaż w jaki sposób dodawałeś te nagłowki do maila. Dodatkowo mb_send_mail().


--------------------
Go to the top of the page
+Quote Post
brzanek
post
Post #5





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Mam taki kod
  1. <?php
  2. include('db.php');
  3.  
  4. header('Content-type: text/html; charset=utf-8');
  5.  
  6. // pobieranie daty z bazy danych w formacie unix
  7. $result = $mysqli->query("SELECT * FROM prognoza WHERE wid_miasto =1 ORDER BY id ASC LIMIT 1");
  8. while ( $row = mysqli_fetch_array($result) ) {
  9. $tm = $row['wtime'];
  10. }
  11. // opady
  12. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tm AND wprecipIntensity BETWEEN 10 AND 20");
  13. while($row = mysqli_fetch_array($result)) {
  14. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl")){
  15. echo 'Wiadomość została wysłana.';
  16. } else {
  17. echo 'Bład przy wysyłaniu wiadomości.';
  18. }
  19. }
  20. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tm AND wprecipIntensity BETWEEN 20 AND 50");
  21. while($row = mysqli_fetch_array($result)) {
  22. if(mail("".$row['adres']."", "Bardzo silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są bardzo silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl")){
  23. echo 'Wiadomość została wysłana.';
  24. } else {
  25. echo 'Bład przy wysyłaniu wiadomości.';
  26. }
  27. }
  28. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tm AND wprecipIntensity BETWEEN 50 AND 150");
  29. while($row = mysqli_fetch_array($result)) {
  30. if(mail("".$row['adres']."", "Ekstremalne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są ekstremalne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl")){
  31. echo 'Wiadomość została wysłana.';
  32. } else {
  33. echo 'Bład przy wysyłaniu wiadomości.';
  34. }
  35. }


Wcześniej zamieniałem ś na \230 ale w wiadomości na emailu miałem słowo zamiast miejscowości to miejscowo ci
Wprowadzenie tej linii
  1. header('Content-type: text/html; charset=utf-8');

Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Ale ty masz definiować header dla maila dodatkowo. Masz w dokumentacji opisane. Poza tym ktoś ci już mówił - zacznij używać sprawdzone paczki do mailingu typu phpmailer a będzie to dużo łatwiejsze.


--------------------
Go to the top of the page
+Quote Post
brzanek
post
Post #7





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Dodając tak
  1. <?php
  2. include('db.php');
  3.  
  4. header('Content-type: text/html; charset=utf-8');
  5. $header = ('Content-type: text/html; charset=utf-8');
  6.  
  7. // pobieranie daty z bazy danych w formacie unix
  8. $result = $mysqli->query("SELECT * FROM prognoza WHERE wid_miasto =1 ORDER BY id ASC LIMIT 1");
  9. while ( $row = mysqli_fetch_array($result) ) {
  10. $tm = $row['wtime'];
  11. }
  12.  
  13. // opady
  14. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tm AND wprecipIntensity BETWEEN 10 AND 20");
  15. while($row = mysqli_fetch_array($result)) {
  16. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl", $header)){
  17. echo 'Wiadomość została wysłana.';
  18. } else {
  19. echo 'Bład przy wysyłaniu wiadomości.';
  20. }
  21. }


$header = ('Content-type: text/html; charset=utf-8');
  1. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl", $header)){

Zmieniając na to
  1. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", "From: info@pogoda-zachodniopomorskie.pl", ""$header"")){

Też nic nie daje nadal wysyłane są krzaczki.
Wyświetla mi się błąd przy wysyłaniu.
Używał bym phpmailer ale moje wiadomości będą różne nie będą zawsze takie same. Raz będą dotyczyły opadów a raz temperatury czy wiatru. Musiał bym zrobić kilka możliwości.
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Masz dodać nagłówek jako 4 parametr mail a nie 5. Dodatkowo po co piszesz "".$row['adres']."" zamiast samego $row['adres']?


--------------------
Go to the top of the page
+Quote Post
brzanek
post
Post #9





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


A widzisz chodzi dokładnie o ten 5 parametr.
Zrobiłem tak
  1. $result = $mysqli->query("SELECT * FROM prognoza INNER JOIN email ON prognoza.wid_miasto = email.email_wid_miasto WHERE wtime =$tm AND wprecipIntensity BETWEEN 10 AND 20");
  2. while($row = mysqli_fetch_array($result)) {
  3. if(mail("".$row['adres']."", "Silne opady", "".date("d.m.Y", $row['wtime'])." w miejscowości ".$row['miasto']." prognozowane są silne opady do ".ceil($row['wprecipIntensity'])." l/m2.", $header)){
  4. echo 'Wiadomość została wysłana.';
  5. } else {
  6. echo 'Bład przy wysyłaniu wiadomości.';
  7. }
  8. }

Działa ale teraz nie ma adresu kto wysyłał.
  1. $header = ("From: info@pogoda-zachodniopomorskie.pl", "Content-type: text/html; charset=utf-8");

Tak nie zadziałało.
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A czytasz ty w ogóle dokumentację czy strzelasz tylko?


--------------------
Go to the top of the page
+Quote Post
brzanek
post
Post #11





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Zrobione dzięki
  1. $header = ('From: adres@adres.pl'. "\r\n" .'Content-type: text/html; charset=utf-8');
Go to the top of the page
+Quote Post
woojciech
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 7.09.2011
Skąd: Warszawa

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


Prócz zadeklarowania w phpmailerze kodowania - używa się aktualnie UTF-8 -
KONIECZNE jest zadeklarowania kodowania całej strony html,
bo formularz (pole treści maila w formularzu jak i inne wypełniane z klawiatury pola formularza) czerpie tę informację właśnie z
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />

Może być oczywiście wymuszenie przez polecenie header(), ale to polecenie musi być jako pierwsze na stronie html, co nie zawsze jest do zrobienia.
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 Aktualny czas: 19.08.2025 - 20:36