PHP почтовик - без вложений не работает - PullRequest
1 голос
/ 06 апреля 2020

У меня есть эта контактная форма на моей странице контактов. Он работает правильно с вложением. Но если нет прикрепленного файла, я получаю письма с неправильными символами, например: ". KĂśrĂźlbelĂźl 35 oldalrĂłl lenne szĂł." Мне нужны письма на венгерском языке, charset-utf-8. где я должен написать в нем? Я пытаюсь выучить язык php, но, пожалуйста, если у вас есть идея, где я ошибаюсь, скажите, пожалуйста. Вот мой код:

<?php
$statusMsg='';
if(isset($_FILES["file"]["name"])){
   $email = $_POST['email'];
    $name = $_POST['name'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    $captcha;
    if(isset($_POST['g-recaptcha-response'])){
          $captcha=$_POST['g-recaptcha-response'];
        }
        if(!$captcha){
          echo '<h2>Kérjük pipáld be, hogy nem vagy robot!</h2>';
          exit;
        }
        $secretKey = "6LcsouEUAAAAAHNvPVT_dANY7m0u7yJoGT68hqhW";
        $ip = $_SERVER['REMOTE_ADDR'];
        // post request to server
        $url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) .  '&response=' . urlencode($captcha);
        $response = file_get_contents($url);
        $responseKeys = json_decode($response,true);
        // should return JSON with success as true
        if($responseKeys["success"]) {
                echo '<h2>Köszönjük az üzenetet! Hamarosan jelentkezünk</h2>';
        } else {
                echo '<h2>You are spammer!</h2>';
        }
$fromemail =  $email;
$subject = $subject;
$email_message = '<h2>Új ajánlatkérés érkezett</h2>
                    <p><b>Név:</b> '.$name.'</p>
                    <p><b>Email:</b> '.$email.'</p>
                    <p><b>Tárgy:</b> '.$subject.'</p>
                    <p><b>Üzenet:</b><br/>'.$message.'</p>';
$email_message.="Melléklet lehet csatolva. Az üzenet az amidit.hu-n keresztül érkezett.";
$semi_rand = md5(uniqid(time()));
$headers = "From: ".$fromemail;
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    $headers .= "\nMIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n" .
    " boundary=\"{$mime_boundary}\"";

if($_FILES["file"]["name"]!= ""){  
    $strFilesName = $_FILES["file"]["name"];  
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["file"]["tmp_name"])));  


    $email_message .= "This is a multi-part message in MIME format.\n\n" .
    "--{$mime_boundary}\n" .
     "Content-Type:text/html; charset=\"UTF-8\"\n" .
    "Content-Transfer-Encoding: 7bit\n\n" .
    $email_message .= "\n\n";


    $email_message .= "--{$mime_boundary}\n" .
    "Content-Type: application/octet-stream;\n" .
    " name=\"{$strFilesName}\"\n" .
    //"Content-Disposition: attachment;\n" .
    //" filename=\"{$fileatt_name}\"\n" .
    "Content-Transfer-Encoding: base64\n\n" .
    $strContent  .= "\n\n" .
    "--{$mime_boundary}--\n";
}
$toemail="info@amidit.hu";  

if(mail($toemail, $subject, $email_message, $headers)){
   $statusMsg= "Az üzenet küldése sikeres.";
}else{
   $statusMsg= "Az üzenetet nem sikerült elküldeni. Kérjük, próbáld meg újra.";
}
}
if ($mail_sent == true){ ?>
        <script language="javascript" type="text/javascript">
        alert('Köszönjük az üzenetet. Hamarosan jelentkezünk!');
        window.location = 'https://amidit.hu';
        </script>
    <?php } else { ?>
    <script language="javascript" type="text/javascript">
        alert('Köszönjük az üzenetet. Hamarosan jelentkezünk!');
        window.location = 'https://amidit.hu';
    </script>
    <?php
    }
   ?>

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Несколько вещей для проверки:

Далее, имейте в виду, что правильно создать сообщения электронной почты очень сложно - с помощью PHP * По возможности следует избегать функции mail() напрямую. Вместо этого используйте библиотеку, такую ​​как PHPMailer , которой вы пометили этот вопрос, которая позаботится о многих вещах для вас, и в которой вам просто нужно установить:

$mail->CharSet = 'utf-8';
0 голосов
/ 06 апреля 2020

вы можете добавить "utf-8" в раздел заголовка электронной почты, как показано ниже.

$headers = "Content-Type: text/html; charset=UTF-8";
...