gửi mail smtp với phpmailer class
DESCRIPTION
Gửi mail SMTP với PHPmailer class Để tìm hiểu kỹ hơn các bạn hãy truy cập: Website: zend.vn Facebook: facebook.com/zendvngroup Youtube: youtube.com/user/luutruonghailanTRANSCRIPT
Gửi mail SMTP v
Trong thương mại điện tử việc sử d
nhiều cách như webmail, outlook express…Nhưng không ph
bằng các cách này và khách hàng củ
Vậy để giải quyết vấn đề này mỗi website c
liên hệ. Form này thường bao gồm nh
gửi – Tiêu đề (Subject) – Nội dung (content)
Nhưng hàm mail() trong PHP thường b
bomb mail. Vì vậy để giải quyết vấ
đó để gửi mail đi (SMTP) và để viế
chúng ta dùng PHPMailer để thực hi
A. Download và cài đặt
1. Download
- Để sử dụng được PHPmailer đ
http://phpmailer.worxware.com/.
- Chọn Product menu | PHP mailer | Download. Ti
cho ứng dụng của chúng ta.
- Hoặc chúng ta có thể truy c
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/
- Nhấn vào PHPMailer v5.1
i mail SMTP với PHPMailer class
dụng email là việc gần như bắt buộc.Chúng ta có th
webmail, outlook express…Nhưng không phải lúc nào chúng ta cũng có th
ủa chúng ta cũng vậy
i website của chúng ta cũng nên có ít nhất một Form đ
m những thành phần cơ bản sau: Tên người gửi (fullname)
i dung (content) – Tập tin đính kèm (Attach).
ng bị cấm trên các host vì người quản lý host sợ chúng ta dùng nó đ
ấn đề này chúng ta phải sử dụng tài khoản email của m
ết mã của phần không phải đơn giản. Nhưng đã có m
c hiện
c PHPmailer đầu tiên chúng ta truy cập vào website
http://phpmailer.worxware.com/.
n Product menu | PHP mailer | Download. Tiếp đó chúng ta chọn thư viện g
a chúng ta.
truy cập vào địa chỉ sau
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/
c.Chúng ta có thể gửi email bằng
ũng có thể thực hiện
t Form để cho khách hàng
i (fullname) – Email người
chúng ta dùng nó để
a một webmail nào
ã có một giải pháp đó là
n gửi mail phù hợp
- Nhấn chọn PHPMailer_v5.1.zip để download
2. Cài đặt
- Giải nén tập tin PHPMailer_v5.1.zip. Sau đó copy các tập tin class.phpmailer.php, class.pop3.php,
class.smtp.php vào thư mục phpmailer như hình sau:
- Nhúng thư viện phpmailer vào ứng dụng <?php
//Nhúng thư viện phpmailer
require_once('phpmailer/class.phpmailer.php');
//Khởi tạo đối tượng
$mail = new PHPMailer();
B. Hướng dẫn sử dụng và demo
1. Gửi email sử dụng hàm PHP mail()
- Trong PHPMailer cũng hộ trợ việc gửi email bằng hàm PHP mail() nếu host của chúng ta không khóa
hàm này <?php
// file 01-basic.php
//Nhúng thư viện phpmailer
require_once('phpmailer/class.phpmailer.php');
//Khởi tạo đối tượng
$mail = new PHPMailer();
/*=====================================
* THIET LAP THONG TIN GUI MAIL
*=====================================*/
//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom('[email protected]','Pham Vu Khanh');
//Thiết lập thông tin người nhận
$mail->AddAddress("[email protected]", "ZendVN Group");
$mail->AddAddress("[email protected]", "ZendVN Group");
//Thiết lập email nhận email hồi đáp
//nếu người nhận nhấn nút Reply
$mail->AddReplyTo("[email protected]","Pham Vu Khanh");
/*=====================================
* THIET LAP NOI DUNG EMAIL
*=====================================*/
//Thiết lập tiêu đề
$mail->Subject = "PHPMailer training by ZendVN Group";
//Thiết lập định dạng font chữ
$mail->CharSet = "utf-8";
//Thiết lập nội dung chính của email
$body = "Khóa học Lập Trình PHP được thực hiện bởi ZendVN Group";
$mail->Body = $body;
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
2. Gửi email bằng SMTP
Trong trường hợp một số host không hỗ trợ hàm mail() của PHP chúng ta có thể sử dụng tài khoản
webmail của host
Đầu tiên bạn vào host của bạn vào tạo một email. Ví dụ tôi tạo một email: [email protected] với mật khẩu
là: 123456. Đồng thới bạn phải chú ý xem SMTP của bạn là gì ví dụ của tôi là mail.zend.vn. Sau khi
chuẩn bị xong chúng ta đã có thể bắt đầu sử dụng tài khoản này để gửi email
<?php
// file 02-smtp.php
//Nhúng thư viện phpmailer
require_once('phpmailer/class.phpmailer.php');
//Khởi tạo đối tượng
$mail = new PHPMailer();
/*=====================================
* THIET LAP THONG TIN GUI MAIL
*=====================================*/
$mail->IsSMTP(); // Gọi đến class xử lý SMTP
$mail->Host = "mail.zend.vn"; // tên SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // Sử dụng đăng nhập vào account
$mail->Host = "mail.zend.vn"; // Thiết lập thông tin của SMPT
$mail->Port = 25; // Thiết lập cổng gửi email của máy
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "123456"; // SMTP account password
//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom('[email protected]','Pham Vu Khanh');
//Thiết lập thông tin người nhận
$mail->AddAddress("[email protected]", "ZendVN Group");
$mail->AddAddress("[email protected]", "ZendVN Group");
//Thiết lập email nhận email hồi đáp
//nếu người nhận nhấn nút Reply
$mail->AddReplyTo("[email protected]","Pham Vu Khanh");
/*=====================================
* THIET LAP NOI DUNG EMAIL
*=====================================*/
//Thiết lập tiêu đề
$mail->Subject = "PHPMailer training by ZendVN Group";
//Thiết lập định dạng font chữ
$mail->CharSet = "utf-8";
//Thiết lập nội dung chính của email
$body = "Khóa học Lập Trình PHP được thực hiện bởi ZendVN Group";
$mail->Body = $body;
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
3. Gửi email bằng SMTP của Gmail
Trong trường hợp bạn không có webmail bạn có thể sử dụng tài khoản của Gmail. Bạn có thể đăng ký
một tài khoản của Gmail tại địa chỉ http://www.gmail.com
Lúc này chúng ta cần chú ý 2 điều. Để gửi tài khoản bằng gmail chúng ta cần làm những điều sau nếu bạn
dùng localhost
- Mở tập tin php.ini tìm dòng “extension=php_openssl.dll” bỏ dấu chấm phẩy và restart lại webserver
- Gmail sử dụng SMTPSecure (ssl) để gửi email
- Khi sử dụng ssl của gmail chúng ta phải sử dụng port 465
Vậy sau khi chúng ta chuẩn bị chúng ta đã có thể gửi email bằng một tài khoản của Gmail.
<?php
// file 03-gmail.php
//Nhúng thư viện phpmailer
require_once('phpmailer/class.phpmailer.php');
//Khởi tạo đối tượng
$mail = new PHPMailer();
/*=====================================
* THIET LAP THONG TIN GUI MAIL
*=====================================*/
$mail->IsSMTP(); // Gọi đến class xử lý SMTP
$mail->Host = "mail.zend.vn"; // tên SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // Sử dụng đăng nhập vào account
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com"; // Thiết lập thông tin của SMPT
$mail->Port = 465; // Thiết lập cổng gửi email của máy
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "123456"; // SMTP account password
//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom('[email protected]','ZendVN Demo email');
//Thiết lập thông tin người nhận
$mail->AddAddress("[email protected]", "ZendVN Group");
$mail->AddAddress("[email protected]", "ZendVN Group");
//Thiết lập email nhận email hồi đáp
//nếu người nhận nhấn nút Reply
$mail->AddReplyTo("[email protected]","Pham Vu Khanh");
/*=====================================
* THIET LAP NOI DUNG EMAIL
*=====================================*/
//Thiết lập tiêu đề
$mail->Subject = "PHPMailer training by ZendVN Group";
//Thiết lập định dạng font chữ
$mail->CharSet = "utf-8";
//Thiết lập nội dung chính của email
$body = "Khóa học Lập Trình PHP được thực hiện bởi ZendVN Group";
$mail->Body = $body;
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
4. Gửi email với bộ soạn thảo văn bản và đính kèm file
Chuẩn một hệ thống thư mục như sau:
Bước 1: Tạo nội dụng cho tập tin fck.php. Tập tin này chứa các bước cấu hình để tạo ra fckeditor
<?php
//1. Nhung tap tin fckeditor vao file chay
include("fckeditor/fckeditor_php5.php") ;
//2. Khai bao duong dan URL den thu muc fckeditor
$sBasePath = 'fckeditor/';
//3. Khoi tao doi tuong FCKeditor
$oFCKeditor = new FCKeditor('message') ;
//4. Thiet lap duong den cho thuong BasePath
$oFCKeditor->BasePath = $sBasePath;
//Dua gia tri vao Editor
$oFCKeditor->Value = 'Viết nội dung email vao đây';
//Thay doi kich thuoc cua Editor
$oFCKeditor->Width = '100%';
$oFCKeditor->Height = 300;
$oFCKeditor->ToolbarSet = 'Basic';
$oFCKeditor->Config['AutoDetectLanguage'] = false;
$oFCKeditor->Config['DefaultLanguage'] = 'en';
Bước 2: Tạo tập tin form.php và nhúng tập tập tin fck.php vào tập tin form.php
<?php
require_once("fck.php") ;
?>
<html>
<head>
<title>PHPMailer training by ZendVN Group</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="css/styles.css" media="screen" rel="stylesheet" type="text/css" >
</head>
<body>
<div id="content-load"></div>
<div id="container">
<h1>PHPMailer training by ZendVN Group</h1>
<div class="form">
<form method="post" action="" id="contact-us" >
<div class="input-box">
<label>Name:</label>
<input type="text" name="name" style="width: 100%"></input>
</div>
<div class="input-box">
<label>Email:</label>
<input type="text" name="email" style="width: 100%"></input>
</div>
<div class="input-box">
<label>Title:</label>
<input type="text" name="title" style="width: 100%"></input>
</div>
<div class="input-box">
<label>Message:</label>
<?php
//5. Tao FCKeditor
echo $oFCKeditor->Create() ;
?>
</div>
<div class="input-box">
<label>Attach:</label>
<input type="file" name="attach"></input>
</div>
<div class="submit">
<input type="submit" value="Submit">
</div>
</form>
</div>
</div>
</body>
</html>
Chúng ta sẽ nhập dữ liệu và nhấn nút submit để gửi dữ liệu qua thì chúng ta thêm một đoạn mã lệnh sau:
<?php
require_once("fck.php") ;
if(!empty($_POST)){
$arrParam = $_POST;
$attach = $_FILES['attach'];
$dirUpload = 'files/';
@copy($attach['tmp_name'], $dirUpload . $attach['name']);
include('send.php');
}
?>
Bước 3: Tạo tập tin send.php để xử lý vấn đề upload file và gửi email có đính kèm file.
<?php
// file send.php
//Nhúng thư viện phpmailer
require_once('phpmailer/class.phpmailer.php');
//Khởi tạo đối tượng
$mail = new PHPMailer();
/*=====================================
* THIET LAP THONG TIN GUI MAIL
*=====================================*/
$mail->IsSMTP(); // Gọi đến class xử lý SMTP
$mail->Host = "smtp.gmail.com"; // tên SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // Sử dụng đăng nhập vào account
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com"; // Thiết lập thông tin của SMPT
$mail->Port = 465; // Thiết lập cổng gửi email của máy
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "123456"; // SMTP account password
/*=====================================
* DUA THONG TIN TU FORM GUI EMAIL VAO
*=====================================*/
//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom($mail->Username ,"ZendVN Email demo");
//Thiết lập thông tin người nhận
$mail->AddAddress('[email protected]', "Pham Vu Khanh");
//Thiết lập email nhận email hồi đáp
//nếu người nhận nhấn nút Reply
$mail->AddReplyTo($arrParam['email'],$arrParam['name']);
/*=====================================
* THIET LAP NOI DUNG EMAIL
*=====================================*/
//Thiết lập tiêu đề
$mail->Subject = $arrParam['title'];
//Thiết lập định dạng font chữ
$mail->CharSet = "utf-8";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
//Thiết lập nội dung chính của email
$body = $arrParam['message'];
$body = eregi_replace("[\]",'',$body);
$mail->MsgHTML($body);
$mail->AddAttachment($dirUpload . $attach['name']);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
unlink($dirUpload . $attach['name']);
}
Chúc các bạn thành công
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: zend.vn
Facebook: facebook.com/zendvngroup
Youtube: youtube.com/user/luutruonghailan