Почтовый файл как вложение через форму - PullRequest
0 голосов
/ 31 мая 2018

Таким образом, в настоящее время я использую форму HTML для получения информации от клиентов (в контексте целевой страницы), которая отправляет по электронной почте всю информацию, предоставленную пользователем, и пока она работает нормально.

Однако я добавил поле для загрузки файла в форму HTML ($ userfile), но не смог правильно обработать загрузку и прикрепление файла.Я много тестировал и дорабатывал, но никак не могу заставить его работать.

Это файл PHP, который я сейчас использую, на основе уже существующего шаблона.

$to             = "email@email.com"; 

$nome     = $_POST["nome"];
$email    = $_POST["email"];
$website  = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

if (isset($email) && isset($nome)) {
    $subject  = "Lead: $nome";
    $headers  = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $headers .= "From: ".$nome." <".$email.">\r\n"."Reply-To: ".$email."\r\n" ;
    $msg      = 'Hey Admin, <br/> <br/> Here are the details:';
    $msg     .= ' <br/> <br/> <table border="1" cellpadding="6" cellspacing="0" style="border: 1px solid  #eeeeee;">';
    foreach ($_POST as $label => $value) {
        $msg .= "<tr><td width='100'>". ucfirst($label) . "</td><td width='300'>" . $value . " </tr>";
    }
    $msg      .= " </table> <br> --- <br>Sent by $website";

    $mail =  mail($to, $subject, $msg, $headers);

    if($mail) {
            echo 'success';
    } else {
            echo 'failed';
    }

} // END isset

?>

А также AJAX POST

var dataString = $(form).serialize();

            /* 
             AJAX POST
             --------- */

            $.ajax({
                type: "POST",
                data: dataString,
                url: "php/contact.php",
                cache: false,
                success: function(d) {
                    $(".form-group").removeClass("has-success");
                    if (d == 'success') {
                        if (noredirect) {
                            $('#js-contact-result').fadeIn('slow').html('<div class="alert alert-success top-space">' + success_msg + '</div>').delay(3000).fadeOut('slow');
                        } else {
                            window.location.href = redirect;
                        }
                    } else {
                        $('#js-contact-result').fadeIn('slow').html('<div class="alert alert-danger top-space">' + error_msg + '</div>').delay(3000).fadeOut('slow');
                    }
                    $("#js-contact-btn").attr("disabled", false);
                }
            });

Если бы кто-нибудь мог указать мне на некоторые ресурсы, где я мог бы узнать больше или действительно помочь мне решить это, я был бы очень признателен.Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вы не можете использовать form.serialize () для ввода файла.

Проверьте здесь: jQuery Ajax File Upload

0 голосов
/ 31 мая 2018
var dataString = $(form).serialize();

не позволяет загружать файлы

, вместо этого использовать объект javascript formdata

var dataString = new FormData(form);
...