Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]utf-8 dla nazwy załącznika
Forum PHP.pl > Forum > Przedszkole
jaroslavmo
Gdy w nazwie załącznika występują polskie znaki, chciałbym aby nazwy we wiadomości wyświetlały się prawidłowo, w tym celu użyłem utf8_decode(); (lina nr 60)

Bez tego w miejscu polskich znaków mam tzw. "krzaki", natomiast po dodaniu utf8_decode w miejscu polskich znaków pojawiają się znaki zapytania.





  1.  
  2.  
  3. <?php
  4. //Import PHPMailer classes into the global namespace
  5. //These must be at the top of your script, not inside a function
  6. use PHPMailer\PHPMailer\PHPMailer;
  7. use PHPMailer\PHPMailer\SMTP;
  8. use PHPMailer\PHPMailer\Exception;
  9.  
  10. //Load Composer's autoloader
  11. require 'autoload.php';
  12.  
  13. //Create an instance; passing `true` enables exceptions
  14. $mail = new PHPMailer(true);
  15. $mail->addCustomHeader('Content-Type', 'text/plain;charset=utf-8');
  16. $mail->Encoding = 'base64';
  17. $honeypot = $_POST['honey'];
  18. $user_name = utf8_decode($_POST['name']);
  19. $user_email = $_POST['email'];
  20. $user_message = $_POST['message'];
  21. $user_phone = $_POST['phone'];
  22. $honeypot = trim($_POST["honey"]);
  23. $max_size = 2 * 1024 * 1204; //2mb
  24. $attachment = $_FILES['uploaded-file'];
  25.  
  26. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  27.  
  28.  
  29. if(!empty($honeypot)) {
  30. echo "NO SPAM!";
  31. } else {
  32.  
  33. $mail = new PHPMailer; //From email address and name
  34. $mail->isMail();
  35.  
  36. //sender
  37. $mail->From = $user_email;
  38. $mail->FromName = $user_name;
  39.  
  40. //recipient
  41. $mail->addAddress("jaroslaw.mor@gmail.com");
  42.  
  43.  
  44. //mail subject
  45. $mail->Subject = "Zapytanie ze strony www";
  46.  
  47.  
  48. $mail->isHTML(true);
  49. //body mail
  50. $mail->Body = "Telefon:$user_phone<br><br>Treść wiadomośći:<br>$user_message";
  51. $mail->AltBody = "Telefon:$user_phone\n$content";
  52.  
  53. //attachment
  54. if(isset($attachment)) {
  55.  
  56. for ($i = 0; $i < count($_FILES['uploaded-file']['name']); $i++) {
  57. if ($_FILES['uploaded-file']['error'][$i] !== UPLOAD_ERR_OK) continue;
  58. $file_TmpName = $_FILES['uploaded-file']["tmp_name"][$i];
  59. $file_name = utf8_decode( $_FILES['uploaded-file']["name"][$i]);
  60.  
  61. if ($_FILES['uploaded-file']['size'][$i] > $max_size) {
  62. echo "file is too big";
  63. die();
  64. }
  65.  
  66. else{
  67. move_uploaded_file($file_TmpName, "uploads/" . $file_name);
  68. $mail-> AddAttachment("uploads/". $file_name);
  69. }
  70. }//for
  71. }//isset
  72.  
  73. if(!$mail->send()) {
  74. echo "Mailer Error: " . $mail->ErrorInfo;
  75. exit();
  76. }
  77.  
  78. else {
  79. header("Location: sent.html");
  80.  
  81. exit();
  82.  
  83. }//if send else
  84.  
  85. }//honey else end
  86.  
  87. }//post end
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
Salvation
Kod
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = "base64";
jaroslavmo
Cytat(Salvation @ 1.04.2022, 16:14:16 ) *
Kod
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = "base64";


Próbowałem już wcześniej, na treść maila działa i polskie znaki się wyświetlają ale na załącznik to nie działa.
Johnas
Otówrz plik przez notepad++ > format > konwrtuj na format UTF-8 bez Bom i zapisz... nieraz kodowanie pliku powoduje błędu... Daj znać jak coś
jaroslavmo
znalazłem ustawienia dotyczące kodowania w pliku phpmailer i teraz działa.
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.