Tải bản đầy đủ (.pdf) (29 trang)

bài 5 chức năng gửi email cho website

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (807.56 KB, 29 trang )

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'] = '';
$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'] = '';
$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'] = '';
$headers['To'] = ', ';
$headers['Cc'] = '';
$headers['Bcc'] = '';
$headers['Subject'] = 'Hello';
$headers['Content-type'] = 'text/html';
//2. Thiết lập danh sách gửi
$recipients = ', ';
$recipients .= ', ';
//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'] = ''; //Đ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 <>';
$to = 'Jane Doe <>';
$subject = 'How to use PEAR Mail';
$body = '<p>Murach PHP and MySQL book has a chapter on how
to use the
<a
href=" 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('');
//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
/> />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
/>

×