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 = 'admin@example.com'; // Recipient email
$from = 'sender@example.com'; // 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"." ";// 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?