GIT – Trong thương mại điện tử việc sử dụng email là việc gần như bắt buộc. Chúng ta có thể gửi email bằng nhiều cách như webmail, outlook express…Nhưng không phải lúc nào chúng ta cũng có thể thực hiện bằng các cách này và khách hàng của chúng ta cũng vậy.

Vậy để giải quyết vấn đề này mỗi website của chúng ta cũng nên có ít nhất một Form để cho khách hàng liên hệ. Form này thường bao gồm những thành phần cơ bản sau: Tên người gửi (fullname) – Email người gửi – Tiêu đề (Subject) – Nội dung (content) – Tập tin đính kèm (Attach).  Nhưng hàm mail() trong thường bị cấm trên các host vì người quản lý host sợ chúng ta dùng nó để bomb mail. Vì vậy để giải quyết vấn đề này chúng ta phải sử dụng tài khoản email của một webmail nào đó để gửi mail đi (SMTP) và để viết mã của phần không phải đơn giản. Nhưng đã có một giải pháp đó là chúng ta dùng PHPMailer để thực hiện

A. và cài đặt

1. Download
–    Để sử dụng được PHPmailer đầu tiên chúng ta truy cập vào website http://phpmailer.worxware.com/.
–    Chọn Product menu | PHP mailer | Download. Tiếp đó chúng ta chọn thư viện gửi mail phù hợp cho ứng dụng của chúng ta.
–    Hoặc chúng ta có thể truy cập vào địa chỉ sau

http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list

Phiên bản hiện tại bài viết này là PHPMailer_5.2.2-rc1.zip

2. Cài đặt

– Giải nén tập tin PHPMailer_5.2.2-rc1.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('vukhanh2212@gmail.com','Pham Vu Khanh');

//Thiết lập thông tin người nhận
$mail->AddAddress("zenvn@gmail.com", "ZendVN Group");
$mail->AddAddress("zenvn@yahoo.com", "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("vukhanh2212@yahoo.com","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: demo@zend.vn 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   = "demo@zend.vn";         // SMTP account username
$mail->Password   = "123456";                // SMTP account password

//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom('demo@zend.vn','Pham Vu Khanh');

//Thiết lập thông tin người nhận
$mail->AddAddress("zendvn@gmail.com", "ZendVN Group");
$mail->AddAddress("zendvn@yahoo.com", "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("demo@zend.vn","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       = "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   = "zendvn.demo@gmail.com"; // SMTP account username
$mail->Password   = "123456";            // SMTP account password

//Thiet lap thong tin nguoi gui va email nguoi gui
$mail->SetFrom('zendvn.demo@gmail.com','ZendVN Demo email');

//Thiết lập thông tin người nhận
$mail->AddAddress("zendvn@gmail.com", "ZendVN Group");
$mail->AddAddress("zendvn@yahoo.com", "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("khanhpham@zend.vn","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>
    <form method="post" action="" id="contact-us" >
        <div>
            <label>Name:</label>
            <input type="text" name="name" style="width: 100%"></input>

        </div>
        <div>
            <label>Email:</label>
            <input type="text" name="email" style="width: 100%"></input>

        </div>
        <div>
            <label>Title:</label>
            <input type="text" name="title" style="width: 100%"></input>

        </div>

        <div>
            <label>Message:</label>
            <?php
                //5. Tao FCKeditor
                echo $oFCKeditor->Create() ;
            ?>

        </div>   
        <div>
            <label>Attach:</label>
            <input type="file" name="attach"></input>
        </div>
        <div>
            <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   = "zendvn.demo@gmail.com";     // 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('vukhanh2212@gmail.com', "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

Nguồn : www.zend.vn

Print Friendly

Comments

comments

Bài viết liên quan