Gửi mail PHP là gì? Code gửi mail bằng SMTP trong PHP

By 02/06/2021Tháng Bảy 17th, 2021KIẾN THỨC LẬP TRÌNH, PHP

Tôi có thể đoán được tại sao bạn đến đây. Có phải đây là điều bạn đang gặp phải:

Bạn đang làm việc hoặc có thể là chủ của một website bán hàng hay Blog được rất nhiều người quan tâm VÀ ngay lúc này, mục tiêu bạn cần phải hoàn thành là làm sao để nhận được tất cả mail thông báo từ form liên hệ.

Tất nhiên tại đây bạn đã tìm được giải pháp cho chính mình. Đó chính là Gửi mail PHP bằng hàm mail(). Nhưng vấn đề thật sự bạn quan tâm là làm sao để sử dụng và cách dùng hàm mail() để gửi mail bằng PHP như thế nào.

Hiểu được điều đó, tôi đã thống kê và tổng hợp từng bước, giúp bạn hình dung và dễ dàng ứng dụng hàm mail() nhanh chóng, đạt được hiệu quả toàn diện nhất. Ngoài ra, trong bài viết này tôi sẽ giúp bạn nắm vững:

  • Hàm mail PHP thật sự là là gì?
  • Các tùy chọn gửi mail trong PHP.
  • Điều kiện tiên quyết trước dùng mail?

Đọc ngay nào!

1. Hàm mail PHP là gì?

PHP là một ngôn ngữ kịch bản server-side được sử dụng rộng rãi. Nó cung cấp nhiều hàm tích hợp được gọi là hàm được cung cấp sẵn hoặc tự tạo trong PHP (PHP Functions).

PHP providesp hỗ trợ email thông qua một hàm mail() được tích hợp sẵn. Khi sử dụng chức năng gửi mail PHP này, bạn có thể dễ dàng gửi email trực tiếp thông qua tập lệnh PHP của mình.

2. Các tùy chọn gửi mail PHP

Cú pháp mail (Email Syntax)

mail (to,subject,message,headers,parameters);

Tham số Email (Email Parameters)

Sau đây là các tham số email trong PHP.

To:

Tham số đầu tiên có trong hàm email() là “to”. Nó là một tham số bắt buộc. Bạn sẽ phải cung cấp id email của người nhận với thông số này.

Subject:

Nó cũng là một tham số bắt buộc. Nó phải thể hiện được nội dung liên quan tới chủ đề của email và không được chứa các newline characters.

Newline characters là ký tự điều khiển hoặc chuỗi các ký tự điều khiển trong một đặc tả mã hóa ký tự được sử dụng để biểu thị sự kết thúc của một dòng văn bản và bắt đầu một ký tự mới.

Message:

Tham số Message có giới hạn ký tự là 70 ký tự, nên trong quá trình triển khai bạn cần lưu ý để không được vượt quá giới hạn. Hơn nữa, các dòng phải được phân tách bằng (\n).

Headers:

Nó được sử dụng để chỉ định các Headers (tiêu đề) bổ sung như BCC và CC.

Lưu ý:

  • Các Headers phải được phân tách bằng (/r/n).
  • Form header rất cần thiết trong việc gửi email. Nó được đặt bằng tham số này hoặc bằng tệp php.ini.

Parameters:

Nó được sử dụng để đặt tham số bổ sung như cài đặt địa chỉ người gửi trên thư gửi.

Tiếp theo, chúng ta cùng đến nội dung lý do tại sao gửi mail PHP là quyết định đúng và phù hợp với bạn.

3. Lý do nên dùng mail PHP

Đây là lý do trong lập trình website, bạn cần sử dụng hàm mail() PHP:

  • Sử dụng hàm mail() PHP là một phương pháp hiệu quả về tiết kiệm chi phí để thông báo cho người dùng về các sự kiện quan trọng.
  • Cho phép người dùng liên hệ với bạn qua email, bằng cách cung cấp biểu mẫu liên hệ trên website gửi nội dung được cung cấp qua email.
  • Developer (Lập trình viên) có thể sử dụng hàm mail() để nhận lỗi hệ thống qua email.
  • Sử dụng hàm mail() PHP để gửi email cho những người đăng ký nhận Email Newsletter (bản tin trên website).
  • Gửi link đặt lại password cho những người dùng quên password của họ.
  • Bạn có thể sử dụng hàm mail() PHP để gửi email các liên kết kích hoạt hoặc xác nhận. Điều này rất hữu ích khi đăng ký người dùng và xác minh địa chỉ email của họ.

4. Điều kiện tiên quyết trước khi sử dụng hàm gửi mail trong PHP

Trước khi bắt đầu vào nội dung hướng dẫn từng bước về cách gửi thư bằng hàm gửi mail trong PHP, hãy cùng tôi điểm qua những điều kiện tiên quyết trước khi dùng gửi mail bằng PHP nào:

  • Gmail giới hạn số lượng người nhận trong một email và số lượng email có thể được gửi mỗi ngày. Giới hạn hiện tại là 500 Email trong một ngày hoặc 500 người nhận trong một email.
    Bạn cần phải lưu ý để không thể tăng giới hạn này. Nếu bạn muốn gửi vượt quá giới hạn này, thì cần phải tích hợp với nền tảng gửi email của bên thứ ba.
  • Khi đạt đến giới hạn ngưỡng, bạn sẽ không thể gửi tin nhắn trong 24 giờ tới. Sau khi hết thời gian tạm ngưng này, bộ đếm sẽ tự động được đặt lại và người dùng có thể tiếp tục gửi email.
  • Theo mặc định, mọi ứng dụng/mã của bên thứ ba không được phép gửi email bằng tài khoản Gmail của bạn.

5. Làm thế nào để kích hoạt tính năng gửi email trong Gmail?

Để kích hoạt được tính năng gửi email trong gmail, bạn cần thực hiện theo các bước sau:

#1: Trước khi gửi email bằng Máy chủ SMTP của Gmail , bạn phải thực hiện một số cài đặt bảo mật và mức độ quyền trong Google Account Security Settings.

#2. Đảm bảo 2-Step-Verification bị vô hiệu hóa.

#3. Bật ON quyền truy cập “Less Secure App” hoặc click vào đây .

#4: Nếu 2-step-verification được bật, thì bạn sẽ phải tạo mật khẩu cho ứng dụng hoặc thiết bị của mình.

#5: Đối với các biện pháp bảo mật, Google có thể yêu cầu bạn hoàn thành bước bổ sung khi đăng nhập. Click vào đấy để cho phép truy cập vào tài khoản Google của bạn bằng thiết bị/ứng dụng mới.

6. Viết mã code gửi mail bằng SMTP trong PHP

Bước 1: Tải xuống thư viện PHPMailer từ liên kết github này. Tải xuống trực tiếp tệp .zip.

Giải nén master.zip trong thư mục ứng dụng của bạn và chạy lệnh sau từ thư mục ứng dụng.

gửi mail trong phpComposer là cách được khuyến nghị để cài đặt PHPMailer.

Bước 2: Viết mã PHP để tạo kết nối SMTP

  • Sử dụng thông tin đăng nhập Gmail, kết nối với máy chủ lưu trữ “smtp.gmail.com”
  • Click vào đây để biết thêm một số Ví dụ và Hướng dẫn về PHPMailer

Bước 3: Bao gồm các gói và tệp cho PHPMailer và giao thức SMTP:

gửi mail bằng phpBước 4: Khởi tạo PHP Mailer và đặt SMTP làm giao thức gửi thư:

hàm mail trong phpBước 5: Đặt các thông số cần thiết để tạo kết nối SMTP như máy chủ, cổng và thông tin đăng nhập tài khoản.

SSL và TLS đều là giao thức mật mã cung cấp xác thực và mã hóa dữ liệu giữa các máy chủ, máy và ứng dụng hoạt động trên mạng. SSL là tiền thân của TLS.

code gửi mail bằng smtp trong phpBước 6: Đặt các thông số bắt buộc cho tiêu đề và nội dung email:

hàm gửi mail trong phpBước 7: Gửi email và bắt các trường hợp ngoại lệ bắt buộc:

mail php

7. PHP Mail () Ví dụ: Mẫu email (PHP Mail() Example: Email form)

Tiếp theo tôi sẽ gửi đến bạn một số cách sử dụng thực tế của hàm mail trong PHP này.

Đây là biểu mẫu gửi Email mà bạn có thể phải phối hợp với người dùng của mình. Bạn có thể sử dụng biểu mẫu này để nhận các câu hỏi từ khách hàng của mình, cho dù bạn có nền tảng Thương mại điện tử, trang web B2B hay B2C.

php mail

Biểu mẫu gửi Email

Dưới đây là một số ảnh chụp nhanh về các hoạt động của biểu mẫu:

Khi biểu mẫu được gửi trống

hộp mail php

Biểu mẫu được gửi trống

Khi mọi trường được gửi đúng

mail php dung

Khi trường hợp gửi mail đúng

Trong hộp thư đến của quản trị viên web

hộp thư của quản trị viên

Hộp thư đến của quản trị viên web

Hàm mail trong PHP

Đây là mã của email_form.php bạn có thể tham khảo:

  1. <?php
  2. if(isset($_POST[’email’])) {
  3. $email_to = “atif.shahab@cloudways.com”;
  4. $email_subject = “Summarized propose of the email”;
  5. //Errors to show if there is a problem in form fields.
  6. function died($error) {
  7. echo “We are sorry that we can procceed your request due to error(s)”;
  8. echo “Below is the error(s) list <br /><br />”;
  9. echo $error.”<br /><br />”;
  10. echo “Please go back and fix these errors.<br /><br />”;
  11. die();
  12. }
  13. // validation expected data exists
  14. if(!isset($_POST[‘first_name’]) ||
  15. !isset($_POST[‘last_name’]) ||
  16. !isset($_POST[’email’]) ||
  17. !isset($_POST[‘telephone’]) ||
  18. !isset($_POST[‘comments’])) {
  19. died(‘We are sorry to proceed your request due to error within form entries’);
  20. }
  21. $first_name = $_POST[‘first_name’]; // required
  22. $last_name = $_POST[‘last_name’]; // required
  23. $email_from = $_POST[’email’]; // required
  24. $telephone = $_POST[‘telephone’]; // not required
  25. $comments = $_POST[‘comments’]; // required
  26. $error_message = “”;
  27. $email_exp = ‘/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/’;
  28. if(!preg_match($email_exp,$email_from)) {
  29. $error_message .= ‘You entered an invalid email<br />’;
  30. }
  31. $string_exp = “/^[A-Za-z .’-]+$/”;
  32. if(!preg_match($string_exp,$first_name)) {
  33. $error_message .= ‘Invalid first name<br />’;
  34. }
  35. if(!preg_match($string_exp,$last_name)) {
  36. $error_message .= ‘Invalid Last name<br />’;
  37. }
  38. if(strlen($comments) < 2) {
  39. $error_message .= ‘Invalid comments<br />’;
  40. }
  41. if(strlen($error_message) > 0) {
  42. died($error_message);
  43. }
  44. $email_message = “Form details below.\n\n”;
  45. function clean_string($string) {
  46. $bad = array(“content-type”,”bcc:”,”to:”,”cc:”,”href”);
  47. return str_replace($bad,””,$string);
  48. }
  49. $email_message .= “First Name: “.clean_string($first_name).”\n”;
  50. $email_message .= “Last Name: “.clean_string($last_name).”\n”;
  51. $email_message .= “Email: “.clean_string($email_from).”\n”;
  52. $email_message .= “Telephone: “.clean_string($telephone).”\n”;
  53. $email_message .= “Comments: “.clean_string($comments).”\n”;
  54. // create email headers
  55. $headers = ‘From: ‘.$email_from.”\r\n”.
  56. ‘Reply-To: ‘.$email_from.”\r\n” .
  57. ‘X-Mailer: PHP/’ . phpversion();
  58. @mail($email_to, $email_subject, $email_message, $headers);
  59. ?>
  60. <!– include your own success html here –>
  61. Thank you for contacting us. We will be in touch with you very soon.
  62. <?php
  63. }
  64. ?>
  65. <form name=”contactform” method=”post” action=”email_form.php”>
  66. <table width=”450px”>
  67. <tr>
  68. <td valign=”top”>
  69. <label for=”first_name”>First Name *</label>
  70. </td>
  71. <td valign=”top”>
  72. <input type=”text” name=”first_name” maxlength=”50″ size=”30″>
  73. </td>
  74. </tr>
  75. <tr>
  76. <td valign=”top””>
  77. <label for=”last_name”>Last Name *</label>
  78. </td>
  79. <td valign=”top”>
  80. <input type=”text” name=”last_name” maxlength=”50″ size=”30″>
  81. </td>
  82. </tr>
  83. <tr>
  84. <td valign=”top”>
  85. <label for=”email”>Email Address *</label>
  86. </td>
  87. <td valign=”top”>
  88. <input type=”text” name=”email” maxlength=”80″ size=”30″>
  89. </td>
  90. </tr>
  91. <tr>
  92. <td valign=”top”>
  93. <label for=”telephone”>Telephone Number</label>
  94. </td>
  95. <td valign=”top”>
  96. <input type=”text” name=”telephone” maxlength=”30″ size=”30″>
  97. </td>
  98. </tr>
  99. <tr>
  100. <td valign=”top”>
  101. <label for=”comments”>Comments *</label>
  102. </td>
  103. <td valign=”top”>
  104. <textarea name=”comments” maxlength=”1000″ cols=”25″ rows=”6″></textarea>
  105. </td>
  106. </tr>
  107. <tr>
  108. <td colspan=”2″ style=”text-align:center”>
  109. <input type=”submit” value=”Submit”> </a>
  110. </td>
  111. </tr>
  112. </table>
  113. </form>

8. Lời kết

Đến đây, bạn đã biết được cách gửi mail PHP bằng hàm mail() và viết code gửi mail bằng SMTP trong PHP rồi đấy. Đó là tất cả những kiến thức tôi muốn gửi đến bạn.

Hy vọng đây là những kiến thức hữu ích giúp bạn nhanh chóng chinh phục hành trình lập trình của mình. Hãy học và áp dụng nhiều hơn nhé.

Nêu bạn muốn học 1 khóa học PHP online thì hãy đến với Ironhack Việt Nam.

Bất cứ thắc mắc hay cần tư vấn thêm về kiến thức lập trình các chuyên gia IRONHACK luôn sẵn sàng hỗ trợ bạn.

Chúc bạn thành công!

Để lại một câu trả lời