通过表单将文件作为附件邮寄

时间:2018-05-31 14:31:18

标签: php ajax forms email phpmailer

因此,我目前正在使用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 :(得分:0)

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

不允许上传文件

而是使用formdata javascript对象

var dataString = new FormData(form);

答案 1 :(得分:0)

您无法使用form.serialize()进行文件输入。

点击此处:jQuery Ajax File Upload

相关问题