TẠO FORM GỬI MAIL BẰNG HTML

     

Gần như bất kỳ dự án kinh doanh nào cũng cần có email và gửi email cho khách hàng hoặc đối tác. Mặc dù có nhiều loại email hosting doanh nghiệp khác nhau, như zerovn.net, Zoho Mail, và G Suite, bạn cũng có thể gửi email bằng PHP. Trong bài hướng dẫn này, bạn sẽ học cách gửi email bằng PHP mail() function có sẵn và PHPMailer với giao thức Simple Mail Transfer Protocol (SMTP).

Bạn đang xem: Tạo form gửi mail bằng html

PHP mail() function có thể được dùng để gửi email sử dụng PHP. Nó thuận tiện nếu bạn muốn tạo form liên hệ trên website của bạn. Với PHP mail(), emails có thể được gửi sử dụng script PHP đơn giản.

Gửi email bằng PHP mail() Function

PHP mail() function kích hoạt chương trình Sendmail, thường được cấu hình bởi system admin. Chương trình này giúp bạn gửi email được.

Để dùng được hàm này, hãy chắc là nhà cung cấp của bạn cho phép bạn chỉnh chức năng Sendmail service.


Gặp vấn đề gửi email? PHP mail() được kích hoạt sẵn trong các gói hosting của zerovn.net.

Nhận khuyến mãi hosting


Các bước gửi email hàm PHP mail() như sau:

Bước 1 – Kích hoạt dịch vụ Sendmail

Nếu bạn đang dùng zerovn.net, bạn có thể kích hoạt hoặc vô hiệu function này trong hPanel. Nhấn vào Emails -> Mail Service Control.

*

Mặc định, Sendmail service đã được kích hoạt. Bạn có thể kiểm tra lại cho chắc.

*

Bước 2 — Tạo một file PHP mới

Đầu tiên, bạn cần tạo file PHP trong tài khoản hosting. File PHP của bạn có thể được truy cập qua tên miền, vì vậy, nó cần được đặt trong folder public_html.

Tạo mới tên file có tên testmail.php bằng nút Add New trong File Manager
*
Double click vào file và copy dán đoạn code này vào trong file testmail.php. Chúng tôi sẽ sử dụng đoạn code này để gửi email và sẽ giải thích cho bạn ở sau:

Sau khi lưu lại file trên. Bạn có thể truy cập tenmiencuaban/testmail.php từ trên trình duyệt để chạy script. Nhớ thay đổi chỗ tenmiencuaban thành tên miền của bạn.Email bạn nhắm đến sẽ nhận được tin nhắn bạn gửi:

*

Hiểu thêm về các thành phần trong PHP Mail

Như đã hứa, chúng tôi sẽ giới thiệu bạn các thành phần cơ bản của một mail script PHP. Ví dụ này là chúng tôi tạo một cú pháp email cơ bản để bạn hiểu nó hoạt động như thế nào cụ thể.

Tuy nhiên, nếu bạn muốn biết thêm thông tin chức năng của Sendmail và các components của nó, bạn có thể xem qua bộ tài liệu PHP chính thức.

Đây là PHP syntax chúng tôi đã dùng ở phần trước:

Cùng xem qua cụ thể về từng dòng một:

ini_set( "display_errors", 1 );error_reporting( E_ALL );2 dòng đầu tiên là bật tính năng hiện lỗi để bạn thấy lỗi nếu có. Chúng sẽ báo lỗi nếu script thực thi thất bại.

$from = "test
zerovn.net-tutorials.com";$from – Email gửi từ. Nhiều nhà cung cấp không cho phép sử dụng email address tùy ý vì lý do nó có thể bị lạm dung làm spoofing. Nên bạn cần điền email address bạn đã tạo cho tên miền này ở đây để thực thi PHP mail thành công.

$to = "test
gmail.com";$to – Email người nhận. Khi bạn gửi đi cho mục đích kiểm tra, hãy dùng email cá nhân của bạn để thử.

$subject = "Checking PHP mail";$subject – Tiêu đề email

$message = "PHP mail works just fine";$message – Đây là chỗ bạn điền nội dung của email vào

$headers = "From:" . $from;$headers – Mỗi email có headers. Chúng bao gồm những thông tin như là email gửi từ, địa chỉ email để trả lời (reply-to address)

mail ($to,$subject,$message,$headers);mail($to,$subject,$message, $headers) – Đây là hàm PHP để chạy lệnh gửi email. Bạn không nên thay đổi gì trong dòng này.

echo "The email message was sent.";echo “The email message was sent.” – PHP function echo sẽ hiển thị thông báo trên màn hình là script đã được thực thi thành công.

Sử dụng PHPMailer để gửi email

PHPMailer là thư viện phổ biến để gửi mail trong PHP. Nó hỗ trợ gửi email bằng hàm mail() hoặc Simple Mail Transfer Protocol (SMTP). Thư viện này đơn giản quá trình phức tạp xây dựng một PHP mail bằng cách cho bạn dùng một bộ các function để tạo và gửi email

Cài PHPMailer cũng rất dễ, đặc biệt nếu bạn đã có sẵn Composer. Nếu bạn đang dùng zerovn.net, bạn không phải lo về việc này nữa vì nó đã được cài sẵn trong mọi gói hosting.

Nếu bạn muốn cài đặt PHPMailer thủ công, bạn có thể kết nối tới hosting qua SSH terminal bằng các bước sau:

Vào giao diện thành viên hPanel, tìm và nhấn vào mục SSH Access trong phần Advanced.Lưu lại thông tin SSH Access Information. Bạn sẽ cần các thông tin SSH IP address, port, username, và password.Nhấn Open và một cửa sổ lệnh sẽ hiện ra. Gõ SSH usernamepassword. Sau khi hoàn tất, nhấn Enter.

Xem thêm:


GHI CHÚ: PuTTY sẽ KHÔNG hiện dấu nháy khi nhập pass. Bạn đừng lo mà cứ gõ đúng password là được.


Thực hiện lệnh sau:

cd public_htmlNhấn Enter, rồi chạy lệnh:composer require phpmailer/phpmailer

Sử dụng PHPMailer để gửi email với zerovn.net SMTP

Khi bạn đã có PHPMailer sẵn, bạn có thể dùng nó để gửi PHP mails bằng zerovn.net SMTP.

Tạo một file có tên testphpmailer.php trong thư mục Public_html. Truy cập hPanel dashboard và nhấn vào File Manager -> Go to File Manager.Nhấn Add New. Đặt tên file testphpmailer.php rồi nhấn Create.Nhấn double click vào file vừa tạo testphpmailer.php, và copy-paste đoạn code bên dưới vào:

isSMTP();$mail->SMTPDebug = 2;$mail->Host = "smtp.zerovn.net.com";$mail->Port = 587;$mail->SMTPAuth = true;$mail->Username = "test
zerovn.net-tutorials.com";$mail->Password = "YOUR PASSWORD HERE";$mail->setFrom("test
zerovn.net-tutorials.com", "Your Name");$mail->addReplyTo("test
zerovn.net-tutorials.com", "Your Name");$mail->addAddress("example
email.com", "Receiver Name");$mail->Subject = "Testing PHPMailer";$mail->msgHTML(file_get_contents("message.html"), __DIR__);$mail->Body = "This is a plain text message body";//$mail->addAttachment("test.txt");if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo;} else { echo "The email message was sent.";}?>Chỉnh đoạn code ở trên cho đúng. Ví dụ, bạn cần thay thế EMAIL_ACCOUNT_PASSWORD bằng email passwordtest
zerovn.net-tutorials.com
thành username của bạn, example
gmail.com
thành recipient email address,… Khi hoàn tất, nhấn Save & Close.PHPMailer giờ đã sẵn sàng để dùng. Thực thi đoạn script trên bằng cách truy cập YourDomain.com/testphpmailer.php trên trình duyệt.

Hiểu về PHPMailer Components

Để hiểu PHPMailer hoạt động như thế nào, hãy cùng chúng tôi xem mô tả của ví dụ script trên đã dùng SMTP để gửi email thành công nhé. Đây là giải thích từng component:

use PHPMailer\PHPMailer\PHPMailer;Dòng này nhập PHPMailer class vào global namespace.

require "../vendor/autoload.php";Nó kết hợp nhiều thư viện khác nhau để PHPMailer chạy được.

$mail->Tất cả những biến tương tự chứa thông tin quan trọng, như địa chỉ server, message header, attachment,… Tóm lại, hãy đảm bảo sender được bảo vệ bởi chứng thực SMTP.

if (!$mail->send()) {Định nghĩa điều gì sẽ xảy ra khi script được thực thi.

echo "Mailer Error: " . $mail->ErrorInfo;Nó sẽ hiện lỗi giải thích khi nào script thất bại.

} else {Xác định điều gì xảy ra tiếp theo khi scritp được thực thị.

echo "The email message was sent!";Nếu email được gửi thành công, dòng này sẽ hiện ra.


PRO TIP: Dòng này SMTPDebug = 2; chỉ hữu dụng khi bạn gửi test script và muốn xem nó hoạt động như thế nào. Bạn cần chuyển nó về SMTPDebug = 0; nếu bạn đã test xong. Để tránh người dùng cuối nhận được SMTP deliver report.


Nếu bạn chú ý, bạn sẽ nhận ra nó hơi khác so với ví dụ đầu tiên – chúng tôi đang gửi một HTML message thay vì là một đoạn văn bản thuần túy.

Vì vậy, tin nhắn của bạn sẽ tải nội dung từ trong file message.html đặt trong cùng thư mục — public_html.

Định dạng này có nhiều chức năng tuyệt vời hơn so với plain text vì HTML có khả năng tùy chỉnh cao. Bạn có thể chỉnh màu, phong cách, ảnh, và thêm file multimedia vào, những thứ mà sẽ bị mất khi gửi mail plain text.

Xem thêm: Trang Web Nói Chuyện Với Người Nước Ngoài Miễn Phí, 10 Website Chat Free Tiếng Anh

PHPMailer Contact Form

Bạn có thể ứng dụng PHPMailer vào nhiều thứ hơn thay vì chỉ gửi PHP mail đơn giản. Một khi bạn đã ứng dụng nó, bạn có thể tạo contact form nơi độc giả có thể nhanh chóng tương tác với bạn.

Đây là ví dụ của đoạn script:

isSMTP(); $mail->Host = "smtp.zerovn.net.com"; $mail->Port = 587; $mail->SMTPAuth = true; $mail->Username = "test
zerovn.net-tutorials.com"; $mail->Password = "EMAIL_ACCOUNT_PASSWORD"; $mail->setFrom("test
zerovn.net-tutorials.com", "Mr. Drago"); $mail->addAddress("example