Hướng dẫn email form with file attachment in html - mẫu email có tệp đính kèm trong html

Bài viết này chỉ cho bạn cách tạo biểu mẫu email dựa trên PHP hỗ trợ tệp đính kèm tệp. Bài viết cũng sẽ chỉ cho bạn cách xác thực loại và kích thước của tệp đã tải lên.

Biểu mẫu HTML với hộp tải lên tệp

Mã cho biểu mẫu HTML với hộp tải lên tệp được đưa ra bên dưới. Người dùng có thể nhấp vào nút ‘Duyệt, để chọn tệp từ máy cục bộ của mình.


<form method="POST" name="email_form_with_php"
action="php-form-action.php" enctype="multipart/form-data"> 

<label for='name'>Name: </label>
<input type="text" name="name" >

<label for='email'>Email: </label>
<input type="text" name="email" >

<label for='message'>Message:</label>
<textarea name="message"></textarea>

<label for='uploaded_file'>Select A File To Upload:</label>
<input type="file" name="uploaded_file">

<input type="submit" value="Submit" name='submit'>
</form>

Hình thức sẽ trông như thế này:

Hướng dẫn email form with file attachment in html - mẫu email có tệp đính kèm trong html

Xin lưu ý rằng chúng tôi đã thêm:


"enctype="multipart/form-data"

Trong khi xác định thẻ <form>. Điều này là để nói với trình duyệt rằng biểu mẫu này sẽ được sử dụng để tải lên các tệp. Sau đó, chúng tôi đã thêm các trường của tên tên và các trường email và các trường email để thu thập thông tin người dùng. Trường biểu mẫu thứ ba là hộp tải lên tệp.


<input type="file" name="uploaded_file">

Khi nhấn nút Sub Sub Sub Sund, dữ liệu biểu mẫu cùng với dữ liệu tệp được đăng lên tập lệnh được trỏ bởi thuộc tính ‘hành động của biểu mẫu.

Nhận tệp đã tải lên trong tập lệnh PHP

Trong tập lệnh PHP, trước tiên chúng tôi sẽ xác thực việc gửi và nếu xác thực thành công, chúng tôi sẽ gửi bài đăng qua email.

Chúng ta có thể truy cập tệp được tải lên và các thuộc tính khác nhau của nó bằng cách sử dụng mảng $ _FILES. Mảng này sẽ chứa tên, kích thước, đường dẫn và các thuộc tính khác của tệp được tải lên. Mã bên dưới có tên, loại và kích thước của tệp đã tải lên:


//Get the uploaded file information
$name_of_uploaded_file =
    basename($_FILES['uploaded_file']['name']);

//get the file extension of the file
$type_of_uploaded_file =
    substr($name_of_uploaded_file,
    strrpos($name_of_uploaded_file, '.') + 1);

$size_of_uploaded_file =
    $_FILES["uploaded_file"]["size"]/1024;//size in KBs

Mã trên là nhận các thuộc tính khác nhau của tệp được tải lên từ mảng $_FILES[].

Xác thực kích thước và phần mở rộng của tệp đã tải lên

Giả sử chúng tôi không muốn cho phép các tệp lớn hơn kích thước 100kb và chúng tôi chỉ muốn cho phép các tệp hình ảnh được tải lên. Mã xác nhận diễn ra như thế này:


//Settings
$max_allowed_file_size = 100; // size in KB
$allowed_extensions = array("jpg", "jpeg", "gif", "bmp");

//Validations
if($size_of_uploaded_file > $max_allowed_file_size )
{
  $errors .= "\n Size of file should be less than $max_allowed_file_size";
}

//------ Validate the file extension -----
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++)
{
  if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
  {
    $allowed_ext = true;
  }
}

if(!$allowed_ext)
{
  $errors .= "\n The uploaded file is not supported file type. ".
  " Only the following file types are supported: ".implode(',',$allowed_extensions);
}

Trong mã trên, chúng tôi đang xác thực kích thước tệp và loại. Chúng tôi có kích thước tệp được phép tối đa ($ max_allowed_file_size) được đặt thành 100kb. Mảng $ cho phép_extensions chứa các phần mở rộng tệp của tất cả các loại tệp được phép. Mã xác thực kiểm tra xem phần mở rộng tệp có phù hợp với bất kỳ phần mở rộng nào trong mảng $ cho phép_extensions hay không.

Nếu có lỗi được tìm thấy trong xác thực, lỗi được hiển thị. Nếu không, chúng tôi tiến hành gửi email.

Sao chép tệp đã tải lên

Bây giờ, đã đến lúc gửi tệp đã tải lên với thông báo người dùng đến địa chỉ email của người nhận.

Trước hết, chúng tôi sẽ sao chép tệp vào một thư mục trên máy chủ.


//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["uploaded_file"]["tmp_name"];

if(is_uploaded_file($tmp_path))
{
  if(!copy($tmp_path,$path_of_uploaded_file))
  {
    $errors .= '\n error while copying the uploaded file';
  }
}

Mã này sao chép tệp được tải lên vào thư mục ‘Tải lên. Bạn có thể thay đổi thư mục tải lên bằng cách cập nhật $ upload_folder. Vui lòng đảm bảo rằng thư mục tải lên trên mạng có các quyền của 777 777.

Gửi email

Bước tiếp theo là soạn và gửi email. Chúng tôi sẽ sử dụng thư viện lê để soạn và gửi email. .

Đầu tiên, chúng ta cần bao gồm các tệp thư viện lê cho các lớp này.


include_once('Mail.php');
include_once('Mail_Mime/mime.php');

Mã bên dưới bao gồm và gửi email


$message = new Mail_mime();

$message->setTXTBody($text);

$message->addAttachment($path_of_uploaded_file);

$body = $message->get();

$extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email);

$headers = $message->headers($extraheaders);

$mail = Mail::factory("mail");

$mail->send($to, $headers, $body);

Lớp


"enctype="multipart/form-data"
0 giúp soạn tin một tin nhắn MIME. Trong mã trên, một đối tượng mail_mime được tạo, thân văn bản được cập nhật (

"enctype="multipart/form-data"
1) và tệp đính kèm được thêm vào (

"enctype="multipart/form-data"
2)

Thông báo được mã hóa MIME sau đó được gửi bằng lớp thư.

Mẫu tải lên PHP mẫu

Nhấn vào đây để tải xuống bản tin php-form-toorm.zip

Việc tải xuống chứa một biểu mẫu tải lên PHP hoàn chỉnh gửi được tải lên qua email.

Cách cài đặt thư viện lê

Trong bài viết này, chúng tôi đã sử dụng các lớp Pear :: Mail và Pear :: mail_mime để gửi email với tệp đính kèm. Trước khi sử dụng các lớp này, bạn cần cài đặt gói lê trên máy chủ của mình. Nó nằm ngoài phạm vi của hướng dẫn này để thảo luận về việc lắp đặt lê. Nhưng, tôi muốn cho bạn một mẹo nhanh. Nhận tập lệnh trình cài đặt lê từ

http://pear.php.net/go-pear

Lưu tệp dưới dạng pear-installer.php. Tải tệp này lên máy chủ của bạn trong bất kỳ thư mục nào. Sau đó, chạy tệp này từ trình duyệt của bạn, như thế này:

http://www.yourdomain.com/pear-installer.php

Điều này hiển thị giao diện web để cài đặt lê trên trang web của bạn. Giao diện cho thấy hướng dẫn chi tiết. Sau khi PEAR được cài đặt, tìm kiếm và cài đặt các gói Mail Mail và Mail Mail_Mime.

Cũng xem: Các biểu mẫu tải lên tệp miễn phí khác từ reusableforms.com: more free file upload forms from ReusableForms.com

Xem thêm

  • Một mẫu email đơn giản ra khỏi lò
  • Cách thêm biểu mẫu email trong trang web WordPress của bạn
  • Gửi các bài nộp biểu mẫu đến email bằng cách sử dụng 'mailto:'
  • Tại sao tập lệnh PHP của tôi không gửi email?