Hướng dẫn Sử dụng PHPMailer để gửi mail

Thảo luận trong 'Hosting giá rẻ' bắt đầu bởi Thuy Hoang, 27/11/18.

Lượt xem: 56

  1. Thuy Hoang

    Thuy Hoang Thượng Đế Thành viên BQT

    Tham gia:
    20/9/18
    Bài viết:
    185
    Đã được thích:
    86
    Điểm thành tích:
    28
    Giới tính:
    Nam
    Địa phương:
    Bình Dương
    Sử dụng PHPMailer để gửi mail

    Khoảng 2 tuần trở lại đây mình nhận được khá nhiều email về vấn đề gửi mail trên localhost. Vấn đề này cũng khá phổ biến, mặc định hàm mail() trên localhost không thể gửi được. Và chúng ta cũng có nhiều giải pháp cho vấn đề, nhưng mình nghĩ PHPMailer là giải pháp ổn định nhất.

    Có ba cách để có thể gửi mail trên localhost.
    • Cài thêm server mail: cách này tốn thời gian để mò, nhưng lại không sử dụng gì nhiều, vì làm trên localhost chủ yếu để test. Khi lên host thì họ đã hổ trợ sẵn hàm mail cho chúng ta rồi.
    • Cấu hình lại server để gửi mail qua SMTP: cách này cũng khá nhanh, tuy nhiên có máy làm được, có máy lại không hoạt động. Khi lên host thì chúng ta đâu được vào cấu hình server của họ. Thông thường, các host ở các nhà cung cấp của Việt Nam thì hàm mail() đều bị khóa.
    • Sử dụng thư viện PHPMailer để gửi mail thông qua SMTP: Đây có lẽ là cách hay nhất, vì chúng ta có thể gửi mail ở bất kì đâu: localhost, hay host bị khóa hàm mail().
    Giới thiệu
    PHPMailer được phát triển bởi Marcus Bointon và được Worx International Inc phát hành, hiện tại có khoảng 9 triệu người dùng chính thức trên khắp thể giới. Phiên bản đầu tiên của PHPMailer được phát hành vào năm 2004, đến nay thì PHPMailer đã ra đến phiên bản 5.0 và hỗ trợ PHP5.

    PHPMailer là mã nguồn mở miễn phí, được phát hành theo giấy phép LGPL 2.1. Do đó, bạn nên tham khảo giấy phép này trước khi dùng.

    SMTP là gì?
    SMTP được viết tắt từ cụm từ Simple Mail Transfer Protocol – Phương thức truyền tải thư điện tử đơn giản. Thông thường, khi soạn thảo email bạn phải đăng nhập vào web mail của nhà cung cấp dịch vụ. Tuy nhiên, với các dịch vụ hỗ trợ SMTP thì họ sẽ cung cấp cho chúng ta các thông số ( Incoming mail và Outgoingmail ) để chúng ta có thể gửi mail ở bất kì đâu (máy tính cá nhân, Laptop, Smartphone, tablet,…) thông qua server SMTP mà họ cung cấp.

    mail-active.jpg
    Google hiện đang là nhà cung cấp mail phổ biến, ngoài ra bạn cũng có thể dùng SMTP của google để tiến hành gửi mail. Trước tiên bạn cần phải kích hoạt dịch vụ theo các bước dưới đây:
    1/ Đăng nhập vào Gmail.
    2/ Nhấp Cài đặt.
    3/ Nhấp Chuyển tiếp và POP/IMAP
    4/ Chọn Bật POP và IMAP.
    5/ Lưu Thay đổi

    Nếu bạn không kích hoạt chức năng này thì bạn sẽ không thể gửi mail thông qua SMTP được.

    Cách sử dụng
    Trước tiên bạn cần phải download toàn bộ source code của PHPMailer tại kênh github chính thức: https://github.com/Synchro/PHPMailer

    Sau đó chúng ta tiến hành giải nén ra, bạn sẽ thấy rất nhiều thư mục và tập tin. Tuy nhiên, bạn hãy chú ý đến các tập tin sau đây ngoài thư mục root: class.phpmailer.php; class.pop3.php; class.smtp.php đó là bộ thư viện chính mà chúng ta cần phải có để có thể gửi mail được.

    Bây giờ chúng ta tiến hành khai báo để tiến hành gửi mail:

    PHP:
    // Khai báo thư viên phpmailer
    require "lib/class.phpmailer.php";
     
    // Khai báo tạo PHPMailer
    $mail = new PHPMailer();
    //Khai báo gửi mail bằng SMTP
    $mail->IsSMTP();
    //Tắt mở kiểm tra lỗi trả về, chấp nhận các giá trị 0 1 2
    // 0 = off không thông báo bất kì gì, tốt nhất nên dùng khi đã hoàn thành.
    // 1 = Thông báo lỗi ở client
    // 2 = Thông báo lỗi cả client và lỗi ở server
    $mail->SMTPDebug  2;
     
    $mail->Debugoutput "html"// Lỗi trả về hiển thị với cấu trúc HTML
    $mail->Host       "smtp.gmail.com"//host smtp để gửi mail
    $mail->Port       587// cổng để gửi mail
    $mail->SMTPSecure "tls"//Phương thức mã hóa thư - ssl hoặc tls
    $mail->SMTPAuth   true//Xác thực SMTP
    $mail->Username   "my_email@gmail.com"// Tên đăng nhập tài khoản Gmail
    $mail->Password   "*******"//Mật khẩu của gmail
    $mail->SetFrom("test@gmail.com""Test Email"); // Thông tin người gửi
    $mail->AddReplyTo("no-reply@example.com","Test Reply");// Ấn định email sẽ nhận khi người dùng reply lại.
    $mail->AddAddress("nguoi-nhan@gmail.com""John Doe");//Email của người nhận
    $mail->Subject "Tiêu đề thư"//Tiêu đề của thư
    $mail->MsgHTML("lorem"); //Nội dung của bức thư.
    // $mail->MsgHTML(file_get_contents("email-template.html"), dirname(__FILE__));
    // Gửi thư với tập tin html
    $mail->AltBody "This is a plain-text message body";//Nội dung rút gọn hiển thị bên ngoài thư mục thư.
    $mail->AddAttachment("images/attact-tui.gif");//Tập tin cần attach
     
    //Tiến hành gửi email và kiểm tra lỗi
    if(!$mail->Send()) {
      echo 
    "Có lỗi khi gửi mail: " $mail->ErrorInfo;
    } else {
      echo 
    "Đã gửi thư thành công!";
    }
    Gửi mail với tập tin html
    Việc gửi mail với một tập tin bằng html ở tại Gmail là hoàn toàn không thể. Tuy nhiên, PHPMailer sẽ hỗ trợ bạn gửi mail với nội dung nằm trong một tập tin html.
    Để làm được thì bạn chỉ cần khai báo thay đổi $mail->MsgHTML(”);

    Mã:
    $mail->MsgHTML(file_get_contents('email-template.html'), dirname(__FILE__));
    
    Chúc các bạn thành công.


    Nguồn: izwebz.com
    Cám ơn các bạn đã xem bài hướng dẫn và mong các bạn sẽ ủng hộ cho Airhost nhé!

    Hosting giá rẻ - AIRHOST.VN - Hosting xenforo và wordpress.
    .................................................................................................................................................................
    Website: AIRHOST.VN
    Fanepage: airhost.vn


    SĐT : 0981 06 08 08
    Kinh Doanh: 0981 06 08 08 Mr. Bình
    Tư vấn - Hỗ trợ: 0899 06 08 08
    Email: airgroup.vn@gmail.com
     
    Last edited by a moderator: 28/11/18

Chia sẻ trang này