bài 5 chức năng gửi email cho website - xây dựng ứng dụng web
DESCRIPTION
Sử dụng gói PEAR Mail Sử dụng hàm helper để gửi email Sử dụng thư viện cURLTRANSCRIPT
![Page 1: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/1.jpg)
Bài 5Chức năng gửi email cho website
![Page 2: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/2.jpg)
Sử dụng gói PEAR MailSử dụng hàm helper để gửi emailSử dụng thư viện cURL
Mục tiêu
Bài 5 - Chức năng gửi email cho website 2
![Page 3: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/3.jpg)
Quy trình gửi và nhận emailSử dụng Gmail để kiểm tra kết quả gửi emailSử dụng PEAR Mail để gửi emailSử 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
![Page 4: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/4.jpg)
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 emailmáy khách
Ứng dụng emailmá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ủ
![Page 5: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/5.jpg)
Ứ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:
SMTPPOP3IMAP
Một số khái niệm
Bài 5 - Chức năng gửi email cho website 5
![Page 6: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/6.jpg)
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ủ emailKhô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ênPEAR 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
![Page 7: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/7.jpg)
Thiết lập thông số cho tài khoản Gmail:Đăng nhập vào tài khoảnNhấn nút SettingsVào tab Forwarding and POP/IMAPTrong mục POP download đánh dấu chọn vào ôEnable POP for all mailNhấ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
![Page 8: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/8.jpg)
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
![Page 9: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/9.jpg)
Bước 1: Nạp gói PEAR MailSử dụng lệnhKhông cần copy file Mail.php vào mã nguồn ứng dụngTrá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 mailermail
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'] = '[email protected]';$option['password'] = 'ghg44463';
![Page 10: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/10.jpg)
Bước 3: Tạo đối tượng mailerSử dụng phương thức tĩnh factory trả về đối tượngmailer dùng để gửi mailNế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'] = '[email protected]';$option['password'] = 'ghg44463';
$mailer = Mail::factory('smtp', $option);
![Page 11: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/11.jpg)
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'] = '[email protected]';$headers['To'] = '[email protected], [email protected]';$headers['Cc'] = '[email protected]';$headers['Bcc'] = '[email protected]';$headers['Subject'] = 'Hello';$headers['Content-type'] = 'text/html';//2. Thiết lập danh sách gửi$recipients = '[email protected], [email protected]';$recipients .= '[email protected], [email protected]';//3. Thiết lập phần body$body = "<p>Hello</p>
<p>How are you</p>";
![Page 12: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/12.jpg)
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);
}
![Page 13: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/13.jpg)
Hàm helper
Bài 5 - Chức năng gửi email cho website 13
<?phprequire_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));
}
![Page 14: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/14.jpg)
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'] = '[email protected]'; //Điền địa chỉ emailthự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;
![Page 15: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/15.jpg)
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()));
}}
![Page 16: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/16.jpg)
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àiif (strlen($mailbox) > 64) return false;if (strlen($host) > 255) return false;
![Page 17: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/17.jpg)
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;}
![Page 18: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/18.jpg)
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;
}?>
![Page 19: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/19.jpg)
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 <[email protected]>';$to = 'Jane Doe <[email protected]>';
$subject = 'How to use PEAR Mail';$body = '<p>Murach PHP and MySQL book has a chapter on howto use the
<ahref="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;
}
![Page 20: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/20.jpg)
Giới thiệu thư viện cURLSử dụng cURL để kết nối tới máy chủ web khácSử 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
![Page 21: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/21.jpg)
Thư viện cURL là một bộ phận của XAMPPPhiên bản XAMPP cho Windows và MAC OSkhông kích hoạt sẵn thư viện cURLThư viện cURL cho phép biến máy chủ webthành trình duyệt webCho 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
![Page 22: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/22.jpg)
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
![Page 23: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/23.jpg)
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ệucurl_setopt($curl, CURLOPT_RETURNTRANFER, true);//Lấy dữ liệu về$page = curl_exec($curl);//Đóng phiêncurl_close($curl);//Xử lý dữ liệu lấy về$page = nl2br(htmlspecialchars($page));echo $page;
![Page 24: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/24.jpg)
Đị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
![Page 25: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/25.jpg)
Các tham số có thể truyền thêm:altqorderbysafeSearch
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
![Page 26: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/26.jpg)
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'];
![Page 27: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/27.jpg)
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 videoforeach ($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ị}
![Page 28: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/28.jpg)
Minh họa kết quả
Bài 5 - Chức năng gửi email cho website 28
![Page 29: Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web](https://reader033.vdocuments.pub/reader033/viewer/2022050907/557ad0efd8b42a2c0f8b50a1/html5/thumbnails/29.jpg)
Máy chủ email sử dụng giao thức SMTP để gửimail. Ứng dụng email máy khách sử dụng giaothức POP hoặc IMAP để nhận emailThư viện cURL cho phép bạn kết nối đến cácserver 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