01/10/2018, 15:30

Bài 15: PHP – Gửi Email

PHP phải được cấu hình đúng trong tập tin php.ini với thông tin chi tiết trong hệ thống của bạn để gửi email. Mở tập tin php.ini ra và tìm đến phần [mail function]. Như đã giới thiệu ngay phần đầu của serial học, là ta thực hành trên môi trường window và dùng XAMPP làm server. Do vậy ...

 

PHP phải được cấu hình đúng trong tập tin php.ini với thông tin chi tiết trong hệ thống của bạn để gửi email. Mở tập tin php.ini ra và tìm đến phần [mail function].

Như đã giới thiệu ngay phần đầu của serial học, là ta thực hành trên môi trường window và dùng XAMPP làm server. Do vậy không khó tìm tập tin này từ trình quản lý của XAMPP.

bai15_send_email

Với hệ thống khác, phổ biến là Linux thì ta có thể tìm thấy tập tin php.ini trong /etc (sẽ có một serial học linux và cấu hình LAMP để làm server chạy PHP và MySQL)

Phần đầu tiên chúng ta quan tâm đó là mục SMTP, cái này định nghĩa địa chỉ email server của hệ thống bạn. Và phần thứ 2 là sendmail_from mà định nghĩa địa chỉ email của bạn, tức dùng địa chỉ email để chứng thực smtp và gửi đi. Do vậy bạn phải cung cấp một địa chỉ email thuộc mail server của bạn,

ví dụ : admin@dammelaptrinh.com

Để tiện lợi cho các bạn thực hành, tôi sẽ hướng dẩn các bạn gửi email từ localhost sử dụng SMTP của Google. Để sử dụng SMTP của Google, điều kiện bạn cung cấp một địa chỉ gmail.

Chúng ta cần config cho 2 file để thực hiện gửi email localhost :

  • Mở file php.ini và tìm đến [mail function] thay đổi một số thông tin như sau:

[mail function]

               SMTP=smtp.gmail.com

               smtp_port=587

               sendmail_from = my-gmail-id@gmail.com // địa chỉ gmail của bạn

              sendmail_path = “”C:xamppsendmailsendmail.exe” -t” //Tùy vào gói xampp bạn cài ở đâu mà chỉnh lại đường dẩn cho phù hợp.

Lưu ý là nếu ở trước các mục trên có dấu ; thì các bạn phải bỏ đi dấu này. 

  • Mở file sendmail.ini. Giả sử ta tìm được trong C:xamppsendmailsendmail.ini. Đây là gói dùng để gửi mail mà khi tậu xampp về là nó có sẳn cho chúng ta, nếu các bạn xài những tool khác thì phải down về cài vào nếu nó không có. Tìm đến dòng [sendmail] và thay đổi một số nội dung như sau:

   [sendmail]

               smtp_server=smtp.gmail.com

               smtp_port=587

               error_logfile=error.log

               debug_logfile=debug.log

               auth_username=my-gmail-id@gmail.com //điền gmail của bạn

              auth_password=my-gmail-password //Pass thực mà bạn log vào được gmail

              force_sender=my-gmail-id@gmail.com //Mục này thì bạn thử bỏ trống coi có j xãy ra hok

Đã cấu hình xong! Bây giờ chúng ta đi vào nội dung chính của bài là dùng chức năng, hàm của PHP để thực hiện gửi email.

Gửi Email Với Văn Bản Thuần Túy (Plain Text)

 

   PHP cung cấp hàm mail() để gửi email. Hàm này yêu cầu 3 đối số bắt buộc đó là địa chỉ email người nhận, chủ đề thông điệp (subject) và nội dung gửi đi, ngoài ra còn có 2 tùy chọn đối số khác. Cú pháp: mail( to, subject, message, headers, parameters ); 

No Đối số và mô tả
1 to

Bắt buộc. Xác định người nhận / email của người nhận

2 subject

Bắt buộc. Chỉ định chủ đề của email. Đối số này không thể chứa bất kỳ ký từ xuống dòng. Tức là ta không viết trên nhiều dòng.

3 message

Bắt buộc. Định nghĩa nội dung để gửi. Mổi dòng sẽ được phân biệt bằng ký tự . Các dòng không nên vượt quá 70 ký tự.

4 headers

Tùy chọn. Giống như From, CC hoặc BCC. Mổi header ta cách biệt bằng ký hiệu (xem ví dụ kế tiếp  sẽ hình dung ra)

5 parameters

Tùy chọn. Xác định đối số này để muốn gửi một chương trình mail

 

Hàm mail() sẽ trả về true nếu gửi thành công và false nếu thất bại. Trường hợp có nhiều người nhận thì có thể xác định trong đối số “to” và ngăn cách các địa chỉ bằng dấu “,”.

Gửi Email Với Nội Dung Có HTML

 

Khi bạn gửi một text message (văn bản đơn giản) sử dụng PHP, thì tất cả nội dung sẽ được tiếp đãi như văn bản đơn giản. Thậm chí nếu bạn có đưa kèm một thẻ html trong text message, nó sẽ hiển thị như văn bản đơn giản và thẻ html sẽ không được định dạng như một cú pháp html .

Ví dụ tôi gửi nội dung như sau:

<h1> Xin chào bạn</h1>. Đây là chương trình test gửi email bằng PHP <strong> sử dụng SMTP của Google</strong>

Thì khi người nhận mở email ra sẽ gặp nội dung như ta gửi, vẩn có thẻ <h1>, thẻ <strong> nguyên gốc, mà không được chuyển hóa và thực thi như một mã HTML.

Vậy bây giờ tôi muốn gửi với mã HTML được định dạng , được thực thi ở thông điệp người nhận thì như thế nào?

PHP cung cấp tùy chọn để gửi một nội dung có mã HTML như một message HTML thực sự

Trong khi gửi một nội dung email, bạn có thể chỉ định một phiên bản Mime, Content type và bộ ký tự để gửi một email HTML

Chúng ta xét ví dụ:

<html>     

 <head>      

<title>Sending HTML email using PHP</title> 

 </head> 

     <body> 

           <?php 

           $to = “xyz@gmail.com”; 

          $subject = “This is subject”; 

          $message = “<b>This is HTML message.</b>”;

          $message .= “<h1>This is headline.</h1>”; 

          $header = “From:admin@dammelaptrinh.com ”;  

          $header .= “Cc:abc@yahoo.com ”;  

          $header .= “MIME-Version: 1.0 ”;  

          $header .= “Content-type: text/html ”;  

          $retval = mail ($to,$subject,$message,$header); 

          if( $retval == true ) {

            echo “Message sent successfully…”;         

         }else { 

           echo “Message could not be sent…”;         

}    

 ?>        

 </body>

</html>

0