Làm cách nào để gửi email từ một biểu mẫu trong PHP?

Biểu mẫu web là một yếu tố được sử dụng rộng rãi cho các ứng dụng web. Nhiều loại biểu mẫu được sử dụng trên trang web để gửi dữ liệu người dùng. Biểu mẫu liên hệ, đăng ký và phản hồi là một số biểu mẫu web được sử dụng nhiều nhất để nhận thông tin đầu vào của người dùng. Nói chung, các trường nhập văn bản, vùng văn bản và chọn được sử dụng trong biểu mẫu web. Nhưng trong một số trường hợp, biểu mẫu web cần được phép người dùng chọn tệp. Trong tình huống này, bạn cần tải lên tệp đã chọn và đính kèm tệp đó vào dữ liệu biểu mẫu

Biểu mẫu liên hệ hoặc phản hồi được sử dụng để liên lạc trực tuyến và dữ liệu biểu mẫu đã gửi được gửi qua email ngay lập tức. Khi biểu mẫu liên hệ có trường tải tệp lên, tệp cần được gửi cùng với email dưới dạng tệp đính kèm. Sử dụng hàm mail(), bạn có thể dễ dàng gửi email với tệp đính kèm và dữ liệu biểu mẫu trong PHP. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách gửi email có tệp đính kèm khi gửi biểu mẫu bằng PHP

Mã ví dụ cung cấp khả năng tức thì để tạo biểu mẫu liên hệ với tùy chọn đính kèm tệp và tích hợp nó vào trang web. Ngoài ra, một email sẽ được gửi đến một địa chỉ email cụ thể với tệp đính kèm. Để hiểu rõ hơn, chúng ta sẽ chia biểu mẫu liên hệ PHP với email và tập lệnh đính kèm tệp thành hai phần, HTML (Biểu mẫu web) và PHP (Gửi biểu mẫu). Bạn có thể đặt cả hai phần của mã cùng nhau trên trang web nơi bạn muốn tích hợp biểu mẫu liên hệ với chúng tôi bằng tệp đính kèm

HTML biểu mẫu web với trường tải lên tệp

Tạo biểu mẫu HTML với một số trường liên hệ cơ bản (Tên, Email, Chủ đề và Tin nhắn) và trường nhập tệp. Trường nhập tệp cho phép người dùng chọn một tệp sẽ được gửi dưới dạng tệp đính kèm với dữ liệu biểu mẫu


    




    

Gửi Email có tệp đính kèm khi Gửi biểu mẫu

Đoạn mã sau xử lý chức năng gửi biểu mẫu và gửi email bằng PHP

  • Nhận dữ liệu biểu mẫu đã gửi bằng phương thức $_POST trong PHP
  • Xác thực dữ liệu đầu vào để kiểm tra xem các trường bắt buộc có trống không
  • Xác thực địa chỉ email bằng bộ lọc PHP FILTER_VALIDATE_EMAIL
  • Kiểm tra và xác thực phần mở rộng tệp để cho phép các định dạng tệp nhất định (tệp PDF, Hình ảnh và MS Word)
  • Tải tệp lên máy chủ bằng hàm PHP move_uploaded_file()
  • Thêm dữ liệu biểu mẫu và tệp đã tải lên vào nội dung email
  • Gửi email đến người nhận được chỉ định với tệp đính kèm bằng hàm PHP mail()
// Email settings
$toEmail = '[email protected]'; // Recipient email
$from = '[email protected]'; // Sender email
$fromName = 'CodexWorld'; // Sender name

// File upload settings
$attachmentUploadDir = "uploads/";
$allowFileTypes = array('pdf', 'doc', 'docx', 'jpg', 'png', 'jpeg');

/* Form submission handler code */
$postData = $uploadedFile = $statusMsg = $valErr = '';
$msgClass = 'errordiv';
if(isset($_POST['submit'])){
    // Get the submitted form data
    $postData = $_POST;
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);

    // Validate input data
    if(empty($name)){
        $valErr .= 'Please enter your name.
';
    }
    if(empty($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false){
        $valErr .= 'Please enter a valid email.
';
    }
    if(empty($subject)){
        $valErr .= 'Please enter subject.
';
    }
    if(empty($message)){
        $valErr .= 'Please enter message.
';
    }

    // Check whether submitted data is valid
    if(empty($valErr)){
        $uploadStatus = 1;

        // Upload attachment file
        if(!empty($_FILES["attachment"]["name"])){

            // File path config
            $targetDir = $attachmentUploadDir;
            $fileName = basename($_FILES["attachment"]["name"]);
            $targetFilePath = $targetDir . $fileName;
            $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);

            // Allow certain file formats
            if(in_array($fileType, $allowFileTypes)){
                // Upload file to the server
                if(move_uploaded_file($_FILES["attachment"]["tmp_name"], $targetFilePath)){
                    $uploadedFile = $targetFilePath;
                }else{
                    $uploadStatus = 0;
                    $statusMsg = "Sorry, there was an error uploading your file.";
                }
            }else{
                $uploadStatus = 0;
                $statusMsg = 'Sorry, only '.implode('/', $allowFileTypes).' files are allowed to upload.';
            }
        }

        if($uploadStatus == 1){
            // Email subject
            $emailSubject = 'Contact Request Submitted by '.$name;

            // Email message
            $htmlContent = '

Contact Request Submitted

Name: '.$name.'

Email: '.$email.'

Subject: '.$subject.'

Message:
'.$message.'

';

            // Header for sender info
            $headers = "From: $fromName"." <".$from.">";

            // Add attachment to email
            if(!empty($uploadedFile) && file_exists($uploadedFile)){

                // Boundary
                $semi_rand = md5(time());
                $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

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

                // Multipart boundary
                $message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
                "Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";

                // Preparing attachment
                if(is_file($uploadedFile)){
                    $message .= "--{$mime_boundary}\n";
                    $fp =    @fopen($uploadedFile,"rb");
                    $data =  @fread($fp,filesize($uploadedFile));
                    @fclose($fp);
                    $data = chunk_split(base64_encode($data));
                    $message .= "Content-Type: application/octet-stream; name=\"".basename($uploadedFile)."\"\n" .
                    "Content-Description: ".basename($uploadedFile)."\n" .
                    "Content-Disposition: attachment;\n" . " filename=\"".basename($uploadedFile)."\"; size=".filesize($uploadedFile).";\n" .
                    "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
                }

                $message .= "--{$mime_boundary}--";
                $returnpath = "-f" . $email;

                // Send email
                $mail = mail($toEmail, $emailSubject, $message, $headers, $returnpath);

                // Delete attachment file from the server
                @unlink($uploadedFile);
            }else{
                    // Set content-type header for sending HTML email
                $headers .= "\r\n". "MIME-Version: 1.0";
                $headers .= "\r\n". "Content-type:text/html;charset=UTF-8";

                // Send email
                $mail = mail($toEmail, $emailSubject, $htmlContent, $headers);
            }

            // If mail sent
            if($mail){
                $statusMsg = 'Thanks! Your contact request has been submitted successfully.';
                $msgClass = 'succdiv';

                $postData = '';
            }else{
                $statusMsg = 'Failed! Something went wrong, please try again.';
            }
        }
    }else{
        $valErr = !empty($valErr)?'
'.trim($valErr, '
'):'';
        $statusMsg = 'Please fill all the mandatory fields.'.$valErr;
    }
}
?>

Contact Form Popup với Email sử dụng Ajax và PHP

Phần kết luận

Code ví dụ của chúng tôi giúp bạn thêm form liên hệ có chức năng gửi email và đính kèm file trên website bằng PHP. Nhưng bạn có thể sử dụng mã này cho bất kỳ loại biểu mẫu web nào để gửi dữ liệu biểu mẫu qua email có tệp đính kèm. Trong mã ví dụ, chúng tôi chỉ cho phép. pdf,. tài liệu,. docx và các tệp hình ảnh dưới dạng tệp đính kèm. Bạn có thể chỉ định bất kỳ loại tệp nào để tải lên và gửi cùng với email khi gửi biểu mẫu

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?

Làm thế nào bạn sẽ gửi một email từ một hình thức?

Hoàn thành khóa học HTML/CSS 2022 . Trong đó, thêm email tiến hành với mailto. tôi. e. gửi thư. emailid@ví dụ. com. add the email id to the action attribute of the form. In that, add email proceeding with mailto: i.e. mailto:[email protected].

Làm cách nào để gửi email xác nhận cho người dùng sau khi gửi biểu mẫu bằng PHP?

1 câu trả lời .
tạo một trường được kích hoạt trong cơ sở dữ liệu (mặc định là sai)
Sau khi đăng ký, email được gửi
Điền một liên kết trong email, để bao gồm. a) mã định danh duy nhất của người dùng b) kích hoạt để hoạt động. .
Tập lệnh đăng ký của bạn cố lấy người dùng theo id
Cập nhật trường đã kích hoạt thành true

Làm cách nào để gửi tệp đính kèm trong email khi gửi biểu mẫu bằng PHP?

Gửi email kèm theo tệp đính kèm khi gửi biểu mẫu .
Nhận dữ liệu biểu mẫu đã gửi bằng cách sử dụng $_POST trong PHP
Xác thực dữ liệu biểu mẫu để kiểm tra xem các trường bắt buộc có trống không
Xác thực địa chỉ email bằng FILTER_VALIDATE_EMAIL trong PHP
Kiểm tra phần mở rộng tệp để cho phép các định dạng tệp nhất định (tệp PDF, Hình ảnh và MS Word)

Làm cách nào để gửi email HTML bằng PHP?

Gửi email HTML bằng PHP .
Sử dụng hàm PHP mail() và cung cấp các tham số cần thiết. to – Địa chỉ email người nhận. .
Tiêu đề kiểu nội dung là bắt buộc để gửi email có định dạng HTML
Các tiêu đề bổ sung được sử dụng để thêm Từ, Cc, Bcc, v.v.
Biến $htmlContent chứa nội dung HTML của email