Brak polskich znaków w wiadomości email (formularz)

0

Witam, mam problem z ustawieniem polskich znaków, w miejscu gdzie jest iso-8859-1 gdy wpisuje utf-8 mail w ogóle się nie wysyła i nie dochodzi na moją skrzynkę pocztową. Proszę o pomoc.

 
<?php
    if(isset($_POST['submit']))
    {
    	//The form has been submitted, prep a nice thank you message
    	$output = '<h1>Thanks for your file and message!</h1>';
    	//Set the form flag to no display (cheap way!)
    	$flags = 'style="display:none;"';

    	//Deal with the email
    	$to = '[email protected]';
    	$subject = 'a file for you';

    	$message = "<br>Imię:".strip_tags($_POST['imie']).""
                ."<br>Nazwisko:".strip_tags($_POST['nazwisko']).""
                ."<br>Nazwa fimry:".strip_tags($_POST['nazwa_firmy']).""
                ."<br>Kod pocztowy:".strip_tags($_POST['kod']).""
                ."<br>Miejscowość:".strip_tags($_POST['miejscowosc']).""
                ."<br>Telefon kontaktowy:".strip_tags($_POST['telefon']).""
                ."<br>Email:".strip_tags($_POST['email']).""
                . "<br>Wiadomość:".strip_tags($_POST['message']);
    	$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
    	$filename = $_FILES['file']['name'];

    	$boundary =md5(date('r', time())); 

    	$headers = "From: [email protected]\r\nReply-To: [email protected]";
    	$headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";

    	$message="This is a multi-part message in MIME format.

--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"

--_2_$boundary
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit

$message

--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

$attachment
--_1_$boundary--";

    	mail($to, $subject, $message, $headers);
    }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>MailFile</title>
</head>

<body>

<?php echo $output; ?>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" <?php echo $flags;?>>
    <p><label for="message">*Imię:</label> <input type="text" name="imie" id="imie" /></p>
    <p><label for="message">*Nazwisko:</label> <input type="text" name="nazwisko" id="nazwisko" /></p>
    <p><label for="message">Nazwa firmy:</label> <input type="text" name="nazwa_firmy" id="nazwa_firmy" /></p>
    <p><label for="message">Kod pocztowy:</label> <input type="text" name="kod" id="kod" /></p>
    <p><label for="message">*Miejscowość:</label> <input type="text" name="miejscowosc" id="miejscowosc" /></p>
    <p><label for="message">*Telefon kontaktowy:</label> <input type="text" name="telefon" id="telefon" /></p>
    <p><label for="message">*Adres e-mail:</label> <input type="text" name="email" id="emial" /></p>
    <p><label for="message">*Potwierdź adres e-mail:</label> <input type="text" name="email2" id="email2" /></p>
<p><label for="message">*Wiadomość:</label> <textarea name="message" id="message" cols="20" rows="8"></textarea></p>
<p><label for="file">Zalacznik (max. 1MB):</label> <input type="file" name="file" id="file"></p>
<p><input type="submit" name="submit" id="submit" value="send"></p>
</form>
</body>
</html>
0

Iiiiiii po raz 10 003 powtarzam: najlepiej nie wynajdywać koła na nowo i nie używać surowej funkcji mail.

Masz takie piękne klasy jak phpMailer np.

0

Albo przynajmniej uwzględnić:

$header .= "Content-typ: text/html; charset=utf-8\r\n";
$header .= "Content-Transfer-Encodin: 8bit\r\n";
0

niestety nie pomogło, w wiadomości email nadal brak polskich znaków, jak i znaczniki html są wpisywane

0

phpmailer?

0

spróbuje, dzięki ;)

0

Użyłem PHPMailer, wszystko super działa, jednak na końcu nie wchodzi w if'a który informuje o poprawności wysłanego maila, nie wiem czemu.

Kod:

 
<?php

echo '<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form enctype="multipart/form-data"  method="post">
            <p><label for="message">*Imię:</label> <input type="text" name="imie" id="imie" required/></p>
            <p><label for="message">*Nazwisko:</label> <input type="text" name="nazwisko" id="nazwisko" required/></p>
            <p><label for="message">Nazwa firmy:</label> <input type="text" name="nazwa_firmy" id="nazwa_firmy" /></p>
            <p><label for="message">Kod pocztowy:</label> <input type="text" name="kod" id="kod" /></p>
            <p><label for="message">*Miejscowość:</label> <input type="text" name="miejscowosc" id="miejscowosc" required/></p>
            <p><label for="message">*Telefon kontaktowy:</label> <input type="text" name="telefon" id="telefon" required/></p>
            <p><label for="message">*Adres e-mail:</label> <input type="text" name="email" id="emial" required/></p>
            <p><label for="message">*Potwierdź adres e-mail:</label> <input type="text" name="email2" id="email2" required/></p>
            <p><label for="message">*Wiadomość:</label> <textarea name="message" id="message" cols="20" rows="8" required></textarea></p>
            <p><label for="file">Zalacznik (max. 1MB):</label><input type="file" name="file" id="file" accept="image/jpeg,image/gif, application/msword, application/msword, application/pdf, image/png, text/plain, image/tiff" />
            <p><input type="submit" name="submit" id="submit" value="Wyślij"></p>
            <input type="
        </form>
    </body> 
</html>
';

if (isset($_POST['checker'])) {

    $wiadomosc = "Imię: " . $_POST['imie'] . "<br>";
    $wiadomosc .= "Nazwisko: " . $_POST['nazwisko'] . "<br>";
    $wiadomosc .= "Nazwa firmy: " . $_POST['nazwa_firmy'] . "<br>";
    $wiadomosc .= "Kod pocztowy: " . $_POST['kod'] . "<br>";
    $wiadomosc .= "Miejscowość: " . $_POST['miejscowosc'] . "<br>";
    $wiadomosc .= "Telefon: " . $_POST['telefon'] . "<br>";
    $wiadomosc .= "Adres e-mail: " . $_POST['email'] . "<br>";
    $wiadomosc .= "Wiadomość: " . $_POST['message'] . "<br>";


    require_once('class.phpmailer.php');    //dodanie klasy phpmailer
    require_once('class.smtp.php');    //dodanie klasy smtp
    $mail = new PHPMailer();    //utworzenie nowej klasy phpmailer
    $mail->From = "[email protected]";    //adres e-mail użyty do wysyłania wiadomości
    $mail->FromName = "Partyk Szymański";    //imię i nazwisko lub nazwa użyta do wysyłania wiadomości
    $mail->AddReplyTo('[email protected]', 'Patryk'); //adres e-mail nadawcy oraz jego nazwa
//w polu "Odpowiedz do"  
    $mail->Host = "*******";    //adres serwera SMTP wysyłającego e-mail
    $mail->Mailer = "smtp";    //do wysłania zostanie użyty serwer SMTP
    $mail->WordWrap = 50;
    $mail->SMTPAuth = true;    //włączenie autoryzacji do serwera SMTP
    $mail->Username = "[email protected]";    //nazwa użytkownika do skrzynki e-mail
    $mail->Password = "********";    //hasło użytkownika do skrzynki e-mail
    $mail->Port = 587; //port serwera SMTP zależny od konfiguracji dostawcy usługi poczty
    $mail->Subject = "temat";    //Temat wiadomości, można stosować zmienne i znaczniki HTML
    //$mail->Body = htmlentities($wiadomosc, ENT_QUOTES, "UTF-8"); 
    $mail->Body = $wiadomosc; //Treść wiadomości, można stosować zmienne i znaczniki HTML     
    $mail->AddAddress("[email protected]", "Storin");    //adres skrzynki e-mail oraz nazwa
    $mail->isHtml(true);
    $mail->CharSet = "UTF-8";
    $mail->Encoding = "base64";
    if (isset($_FILES['file']) &&
            $_FILES['file']['error'] == UPLOAD_ERR_OK) {
        $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
    }
//adresata, do którego trafi wiadomość
    if ($mail->Send()) {    //sprawdzenie wysłania, jeśli wiadomość została pomyślnie wysłana
        echo 'E-mail został wysłany'; //wyświetl ten komunikat
    } else {    //w przeciwnym wypadku
        echo 'E-mail nie mógł zostać wysłany';    //wyświetl następujący
    }
}
?>
0

Nie wchodzi = nie pokazuje żadnego komunikatu? A jak poniżej ifa dasz echo to działa?

0

Dużo analizować nie trzeba. Pierwszy if .:

if(isset($_POST['checker'])) {
  1. Gdzie w formularzu masz tag input o atrybucie ** name = checker** ?
  2. Zmień checker na np. submit i powinno "chodzić" ;)
if(isset($_POST['submit'])) {

1 użytkowników online, w tym zalogowanych: 0, gości: 1