Добавить вложение файла в текущую форму контакта php - PullRequest
0 голосов
/ 18 октября 2019

У меня есть базовая форма контакта с recaptcha, которая просто использует PHP mail() для отправки по электронной почте входных данных. Однако теперь мне нужно иметь дополнительное вложение файла, которое также будет отправлено по электронной почте. Я новичок в PHP и совершенно не уверен, как это сделать. Поскольку файл предлагается пользователем, мне нужно будет загрузить файл на сервер, а затем прикрепить его к электронному письму или есть способ разрешить прикрепление файла непосредственно к форме электронной почты, которую мы создали?

Это контактная форма с recaptcha :

<form action="index.php" method="POST" role="form" class="contactForm">
                <div class="form-group">
                  <input type="text" name="name" class="form-control" id="name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
                  <div class="validation"></div>
                </div>
                <div class="form-group">
                  <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
                  <div class="validation"></div>
                </div>
                <div class="form-group">
                  <input type="text" class="form-control" name="reason" id="reason" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
                  <div class="validation"></div>
                </div>
                <div class="form-group">
                  <textarea class="form-control" name="comment" rows="5" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
                  <div class="validation"></div>
                </div>
                <div class="form-group">
                  <input type="file" class="form-control" id="attachment" name="attachment">
              </div>
                <div class="g-recaptcha" data-sitekey="GOOGLE_RECAPTCHA_KEY"></div>
                <div class="text-center"><button type="submit">Send Message</button></div>

Это PHP почта :

<?php
//Checking For reCAPTCHA
$captcha;
if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
}
// Checking For correct reCAPTCHA
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRET_KEY_&response=" . $captcha);
if (!$captcha || $response.success == false) {
    echo "Your CAPTCHA response was wrong.";
    exit ;
} else {
    // Checking For Blank Fields..
    if ($_POST["name"] == "" || $_POST["email"] == "" || $_POST["reason"] == "" || $_POST["comment"] == "") {
        echo "Fill All Fields..";
    } else {
        $name=$_POST['name'];
        $email=$_POST['email'];
        $reason=$_POST['reason'];
        $comment=$_POST['comment'];

        // Check if the "Sender's Email" input field is filled out
        $email = $_POST['email'];
        // Sanitize E-mail Address
        $email = filter_var($email, FILTER_SANITIZE_EMAIL);
        // Validate E-mail Address
        $email = filter_var($email, FILTER_VALIDATE_EMAIL);
        if (!$email) {
            echo "Invalid Sender's Email";
        } else {
            $to = 'email@email.com';
            $subject = "Contact Form";
            $message = " Name: " . $name . "\r\n Email: " . $email . "\r\n Subject: " . $reason . "\r\n Comment: " . $comment;
            $headers = "From: enq@website.co.za\r\n";
            // Sender's Email
            // Message lines should not exceed 70 characters (PHP rule), so wrap it
            $message = wordwrap($message, 70, "\r\n");
            // Send Mail By PHP Mail Function
            if (mail($to, $subject, $message,  $headers)) {
                print "<script>document.location.href='http://www.website.com/contactsuccess.html';</script>";
            } else {
                echo "Failed to send email, try again.";
                exit ;
            }
        }
    }
}
?>
...