Web301 slide 5

50 %
50 %
Information about Web301 slide 5
News & Politics

Published on May 11, 2014

Author: tuanduongcntt

Source: slideshare.net

Description

Lập Trình Web PHP Nâng Cao - Giáo Trình FPT

Bài 5 Chức năng gửi email cho website

Sử dụng gói PEAR Mail Sử dụng hàm helper để gửi email Sử dụng thư viện cURL Mục tiêu Bài 5 - Chức năng gửi email cho website 2

Quy trình gửi và nhận email Sử dụng Gmail để kiểm tra kết quả gửi email Sử dụng PEAR Mail để gửi email Sử dụng hàm helper để gửi email Cách gửi một email Bài 5 - Chức năng gửi email cho website 3

Quy trình gửi và nhận email: Quy trình gửi và nhận email Bài 5 - Chức năng gửi email cho website 4 Ứng dụng email máy khách Ứng dụng email máy khách Máy chủ email Máy chủ email SMTP POP3 IMAP Người gửi Người nhận Máy chủ Máy chủ

Ứng dụng email máy khách (Email Client) Máy chủ email (Email Server) Các giao thức thường dùng: SMTP POP3 IMAP Một số khái niệm Bài 5 - Chức năng gửi email cho website 5

Hàm gửi mail có sẵn của PHP có hạn chế: Phải sửa file php.ini mỗi lần đổi máy chủ email Không sử dụng được kết nối bảo mật Gói PEAR Mail khắc phục được những hạn chế trên PEAR Mail không đi kèm sẵn với PHP mà phải cài đặt riêng PEAR Mail Bài 5 - Chức năng gửi email cho website 6

Thiết lập thông số cho tài khoản Gmail: Đăng nhập vào tài khoản Nhấn nút Settings Vào tab Forwarding and POP/IMAP Trong mục POP download đánh dấu chọn vào ô Enable POP for all mail Nhấn nút Save changes Sử dụng Gmail để kiểm tra kết quả Bài 5 - Chức năng gửi email cho website 7

Thông số kết nối của máy chủ Gmail: Sử dụng Gmail để kiểm tra kết quả Bài 5 - Chức năng gửi email cho website 8

Bước 1: Nạp gói PEAR Mail Sử dụng lệnh Không cần copy file Mail.php vào mã nguồn ứng dụng Tránh tạo file Mail.php khác để không trùng Bước 2: Thiết lập thông số cho đối tượng mailer mail Sử dụng PEAR Mail để gửi email Bài 5 - Chức năng gửi email cho website 9 require_once 'Mail.php'; //Ví dụ 1: Máy chủ SMTP đơn giản $option = array(); $option['host'] = 'mail.example.com'; //Ví dụ 2: Máy chủ SMTP có xác thực $option = array(); $option['host'] = 'mail.example.com'; $option['auth'] = true; $option['username'] = 'sample.user@example.com'; $option['password'] = 'ghg44463';

Bước 3: Tạo đối tượng mailer Sử dụng phương thức tĩnh factory trả về đối tượng mailer dùng để gửi mail Nếu có lỗi thì trả về đối tượng PEAR_error Sử dụng PEAR Mail để gửi email Bài 5 - Chức năng gửi email cho website 10 //Ví dụ 3: Máy chủ SMTP có xác thực và bảo mật SSL $option = array(); $option['host'] = 'ssl://mail.example.com'; $option['port'] = 465; $option['auth'] = true; $option['username'] = 'sample.user@example.com'; $option['password'] = 'ghg44463'; $mailer = Mail::factory('smtp', $option);

Bước 4: Viết mail Sử dụng PEAR Mail để gửi email Bài 5 - Chức năng gửi email cho website 11 //1. Thiết lập SMTP header $headers = array(); $headers['From'] = 'sample.user@example.com'; $headers['To'] = 'john.doe@example.com, jane.doe@example.com'; $headers['Cc'] = 'fsmith@example.org'; $headers['Bcc'] = 'jsmith@example.net'; $headers['Subject'] = 'Hello'; $headers['Content-type'] = 'text/html'; //2. Thiết lập danh sách gửi $recipients = 'john.doe@example.com, jane.doe@example.com'; $recipients .= 'fsmith@example.org, jsmith@example.net'; //3. Thiết lập phần body $body = "<p>Hello</p> <p>How are you</p>";

Bước 5: Gửi mail và kiểm tra kết quả Sử dụng PEAR Mail để gửi email Bài 5 - Chức năng gửi email cho website 12 //1. Gửi mail $result = $mailer->send($recipients, $header, $body); //2. Kiểm tra kết quả và hiển thị lỗi nếu có if (PEAR::isError($result)) { $error = $result->getMessage(); echo htmlspecialchars($error); }

Hàm helper Bài 5 - Chức năng gửi email cho website 13 <?php require_once 'Mail.php'; require_once 'Mail/RFC822.php'; function send_mail($to, $from, $subject, $body, $is_body_html = false) { if (!valid_email($to)) { throw new Exception('Địa chỉ email To không đúng: ' . htmlspecialchars($to)); } if (!valid_email($from)) { throw new Exception('Địa chỉ email From không đúng: ' . htmlspecialchars($from)); }

Hàm helper Bài 5 - Chức năng gửi email cho website 14 $smtp = array(); $smtp['host'] = 'ssl://smtp.gmail.com'; $smtp['port'] = 465; $smtp['auth'] = true; $smtp['username'] = 'abc@gmail.com'; //Điền địa chỉ email thực vào đây $smtp['password'] = '123456'; //Điền password vào đây $mailer = Mail::factory('smtp', $smtp); if (PEAR::isError($mailer)) { throw new Exception('Could not create mailer'); } //Thêm địa chỉ email vào danh sách email $recipients = array(); $recipients[] = $to;

Hàm helper Bài 5 - Chức năng gửi email cho website 15 //Thiết lập header $headers = array(); $headers['From'] = $from; $headers['To'] = $to; $header['Subject'] = $subject; if ($is_body_html) { $header['Content-type'] = 'text/html'; } //Gửi email $result = $mailer->send($recipients, $headers, $body); //Kiểm tra kết quả và hiển thị lỗi nếu có if (PEAR::isError($result)) { throw new Exception('Error sending email: ' . htmlspecialchars($result->getMessage())); } }

Hàm helper Bài 5 - Chức năng gửi email cho website 16 function valid_email($email) { $emailObjects = Mail_RFC822::parseAddressList($email); if (PEAR::isError($emailObjects)) return false; //Lấy mailbox và host của email đầu tiên $mailbox = $emailObjects[0]->mailbox; $host = $emailObjects[0]->host; //Đảm bảo mailbox và host không quá dài if (strlen($mailbox) > 64) return false; if (strlen($host) > 255) return false;

Hàm helper Bài 5 - Chức năng gửi email cho website 17 //Xác thực mailbox $atom = '[[:alnum:]_!#$%&'*+/=?^`{|}~-]+'; $doatom = '(.' . $atom . ')*'; $address = '(^' . $atom . $doatom . '$)'; $char = '([^"])'; $esc = '(["])'; $text = '(' . char . '|' . $esc . ')+'; $quoted = '(^"' . $text . '"$)'; $localPart = '/' . $address . '|' . $quoted . '/'; $localMatch = preg_match($localPart, $mailbox); if ($localMatch === false || $localMatch != 1) { return false; }

Hàm helper Bài 5 - Chức năng gửi email cho website 18 //Xác thực host $hostname = '([[:alnum:]]([- [:alnum:]]{0,62}[[:alnum:]])?)'; $hostnames = '(' . $hostname . '(.' . hostname . ')*)'; $top = '.[[:alnum:]]{2,6}'; $domainPart = '/^' . $hostnames . $top . '$/'; $domainMatch = preg_match($domainPart, $host); if ($domainMatch === false || $domainMatch != 1) { return false; } return true; } ?>

Ví dụ sử dụng hàm send_email Bài 5 - Chức năng gửi email cho website 19 require_once 'message.php'; $from = 'John Doe <john.doe@example.com>'; $to = 'Jane Doe <jane.doe@example.com>'; $subject = 'How to use PEAR Mail'; $body = '<p>Murach PHP and MySQL book has a chapter on how to use the <a href="http://pear.php.net/Mail/">PEAR Mail package<a> to send email.</p>'; $is_body_html = true; try { send_email($to, $from, $subject, $body, $is_body_html); } catch (Exception $e) { $error = $e->getMessage(); echo $error; }

Giới thiệu thư viện cURL Sử dụng cURL để kết nối tới máy chủ web khác Sử dụng API cung cấp bởi máy chủ web khác Lấy dữ liệu từ máy chủ web khác Bài 5 - Chức năng gửi email cho website 20

Thư viện cURL là một bộ phận của XAMPP Phiên bản XAMPP cho Windows và MAC OS không kích hoạt sẵn thư viện cURL Thư viện cURL cho phép biến máy chủ web thành trình duyệt web Cho phép lấy dữ liệu từ máy chủ web khác và hiển thị trên ứng dụng web của mình Thư viện cURL Bài 5 - Chức năng gửi email cho website 21

Sử dụng các hàm cURL thông dụng: curl_init($url) curl_setopt($curl, OPTION, $value) curl_exec($curl) curl_close($curl) Kết nối tới máy chủ web khác Bài 5 - Chức năng gửi email cho website 22

Ví dụ Bài 5 - Chức năng gửi email cho website 23 //Khởi tạo phiên cURL $curl = curl_init('http://www.abc.com'); //Thiết lập tùy chọn để phiên trả về dữ liệu curl_setopt($curl, CURLOPT_RETURNTRANFER, true); //Lấy dữ liệu về $page = curl_exec($curl); //Đóng phiên curl_close($curl); //Xử lý dữ liệu lấy về $page = nl2br(htmlspecialchars($page)); echo $page;

Địa chỉ tra cứu các hàm API của Youtube: Địa chỉ cơ sở API video Youtube: Ứng dụng tìm kiếm của Youtube Bài 5 - Chức năng gửi email cho website 24 http://developers.google.com/youtube/2.0/reference http://gdata.youtube.com/feeds/api/videos

Các tham số có thể truyền thêm: alt q orderby safeSearch Ví dụ: Truy vấn trên URL Youtube Bài 5 - Chức năng gửi email cho website 25 http://gdata.youtube.com/feeds/api/videos?alt=json&q=shuttle

Sử dụng cURL để truy vấn trên Youtube Bài 5 - Chức năng gửi email cho website 26 //Thiết lập URL cho truy vấn $query = 'space shuttle'; $query = urlencode($query); $base_url = 'http://gdata.youtube.com/feeds/api/videos'; $params = 'alt=json&q=' . $query; $url = $base_url . '?' . $params; //Sử dụng cURL để lấy dữ liệu từ kiểu JSON $curl = curl_init($url); curl_seopt($curl, CURLOPT_RETURNTRANSFER, true); $json_data = curl_exec($curl); curl_close($curl); //Lấy mảng các video từ dữ liệu JSON $data = json_decode($json_data, true); $videos = $data['feed']['entry'];

Sử dụng cURL để truy vấn trên Youtube Bài 5 - Chức năng gửi email cho website 27 //Truy cập dữ liệu của mỗi video foreach ($videos as $video) { $image_url = $video['mediagroup']['media$thumbnail'][0]['url']; $video_url = $video['link'][0]['href']; $text = $video['title']['$t']; //Mã hiển thị các giá trị }

Minh họa kết quả Bài 5 - Chức năng gửi email cho website 28

Máy chủ email sử dụng giao thức SMTP để gửi mail. Ứng dụng email máy khách sử dụng giao thức POP hoặc IMAP để nhận email Thư viện cURL cho phép bạn kết nối đến các server khác trên web. Hầu hết các trang web lớn đều cung cấp API cho phép sử dụng cURL để truy cập đến dữ liệu Tổng kết bài học Bài 5 - Chức năng gửi email cho website 29

Add a comment

Related presentations

Cfbp barometre octobre

Cfbp barometre octobre

November 10, 2014

VITOGAZ vous présente: CFBP baromètre gpl carburant

Ata Escrita da 16ª Sessão Ordinária realizada em 16/10/2014 pela Câmara de Vereado...

Ata Escrita da 10ª Sessão Extraordinária realizada em 16/10/2014 pela Câmara de Ve...

Rx1 nasil kullanilir

Rx1 nasil kullanilir

November 8, 2014

Rx1 zayiflama hapi, kullanimi nasildir, yan etkileri var mi? yan etkiler var ise h...

Esposto del MoVimento 5 Stelle sul Patto del Nazareno

Slide Servizi postali

Slide Servizi postali

November 7, 2014

Slides per i servizi postali presentati in occasione dell'incontro azienda e organ...

Related pages

ENGLISH OPERATING INSTRUCTIONS 2 DEUTSCH ...

ENGLISH OPERATING INSTRUCTIONS .....2 DEUTSCH BEDIENUNGSANLEITUNG ... Slide the lever to the direction of “DOCK”, ... (CF-WEB301).indd 5 2010/07/01 13 ...
Read more

WEB301: 10 Ways to Protect Users of Your Web Applications

... WEB301. Tech Ed North America 2010. 6/9/2010 5:17 PM ... Required Slide . ... Required Slide. Tech Ed North America 2010. 6/9/2010 5:17 PM
Read more

No Slide Title - eee.metu.edu.tr

Modulation: Super heterodyne, DSB & SSB. 1. Modulation Property
Read more

Web1012 slide 2 - Documents

Share Web1012 slide 2. ... 5. CSS (Cascading Style Sheet) Được sử dụng để thể hiện thêm các thuộc tính cho thành phần HTML ...
Read more

Pete LePage Senior Product Manager Microsoft Corporation ...

Pete LePage Senior Product Manager Microsoft Corporation SESSION CODE: WEB301. Upload Log in. My presentations; Profile; Feedback; Log out; Search
Read more

Abdominal Hernia Surgery | Dr. Michael Mastrangelo ...

Abdominal Hernia Surgery | Dr. Michael Mastrangelo | Bend ... Ste 210, Bend, OR 97701 | (541) 383-2200 | Website by Web301 - Sitemap. Bend Hernia ...
Read more

Slide #2 - Mobile Cat And Dog Vet

Slide #2 - Mobile Cat And Dog Vet | Mobile Veterinarian In Bend Oregon
Read more

In-Vehicle Mounting Solutions | Docking Stations | Install ...

In-Vehicle Mounting Solutions | Docking Stations ... www.firstmobiletechnologies.com w 1.800.330.5399 5 ... cable lock slot, and slide release. Warranty
Read more