gửi mail smtp với phpmailer class

9
Gửi m Trong thương mại điện tử việc sử d nhiều cách như webmail, outlook e bằng các cách này và khách hàng cVậy để giải quyết vấn đề này mỗi w liên hệ. Form này thường bao gồm n gửi – Tiêu đề (Subject) – Nội dung Nhưng hàm mail() trong PHP thườn 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 h A. Download và cài đặt 1. Download - Để sử dụng được PHPmaile http://phpmailer.worxware.c - Chọn Product menu | PHP m cho ứng dụng của chúng ta. - Hoặc chúng ta có thể truy c http://sourceforge.net/projec - Nhấn vào PHPMailer v5.1 mail SMTP với PHPMailer class dụng email là việc gần như bắt buộc.Chúng ta có t express…Nhưng không phải lúc nào chúng ta cũng a chúng ta cũng vậy website của chúng ta cũng nên có ít nhất một Form đ những thành phần cơ bản sau: Tên người gửi (fullnam (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 n đề này chúng ta phải sử dụng tài khoản email của ết mã của phần không phải đơn giản. Nhưng đã có m hiện er đầu tiên chúng ta truy cập vào website com/. mailer | Download. Tiếp đó chúng ta chọn thư viện g . cập vào địa chỉ sau cts/phpmailer/files/phpmailer%20for%20php5_6/ thể gửi email bằng g có thể thực hiện để cho khách hàng me) – Email người húng ta dùng nó đa một webmail nào một giải pháp đó là gửi mail phù hợp

Upload: khanhpham

Post on 26-May-2015

933 views

Category:

Technology


2 download

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/luutruonghailan

TRANSCRIPT

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