×

Sử dụng PHPMailer để gửi email có đính kèm tệp trong PHP

Để gửi email có đính kèm tệp trong PHP, thư viện PHPMailer là một công cụ mạnh mẽ và dễ sử dụng. Bài viết này sẽ hướng dẫn bạn cách cài đặt và sử dụng PHPMailer để gửi email kèm tệp đính kèm một cách hiệu quả.

1. Cài Đặt PHPMailer

Trước hết, bạn cần cài đặt PHPMailer. Cách đơn giản nhất để cài đặt thư viện này là thông qua Composer. Nếu bạn chưa cài đặt Composer, hãy tải về và cài đặt từ trang chủ Composer.

Sau khi cài đặt Composer, mở terminal và chạy lệnh sau để cài đặt PHPMailer:

composer require phpmailer/phpmailer

2. Cấu Hình và Gửi Email

Bây giờ, hãy tạo một tập tin PHP và yêu cầu đến thư viện PHPMailer vừa cài đặt.

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

// Khởi tạo đối tượng PHPMailer
$mail = new PHPMailer(true);

try {
    //Cấu hình SMTP Server
    $mail->isSMTP();
    $mail->Host       = 'smtp.example.com';  // Replace with your SMTP server
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your-email@example.com'; // Replace with your email
    $mail->Password   = 'your-password';        // Replace with your password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // Người gửi và người nhận
    $mail->setFrom('from@example.com', 'Your Name');
    $mail->addAddress('to@example.com', 'Recipient Name'); 

    // Nội dung email
    $mail->isHTML(true);
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    // Đính kèm tệp
    $mail->addAttachment('/path/to/file.txt');         // Adding a file attachment
    $mail->addAttachment('/path/to/image.jpg', 'new.jpg'); // Optional name

    // Gửi email
    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

3. Chi Tiết Hơn Về Cấu Hình

Cấu hình SMTP của bạn sẽ phụ thuộc vào nhà cung cấp dịch vụ email bạn đang sử dụng. Đây là một số nhà cung cấp thông dụng và cấu hình tương ứng:

  • Gmail:

    $mail->Host       = 'smtp.gmail.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your-email@gmail.com';
    $mail->Password   = 'your-password';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;
    
  • Yahoo:

    $mail->Host       = 'smtp.mail.yahoo.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'your-email@yahoo.com';
    $mail->Password   = 'your-password';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port       = 465;
    

4. Lưu Ý

  • Thiết lập bảo mật: Hầu hết các dịch vụ email sẽ yêu cầu bạn bật tính năng "cho phép ứng dụng kém bảo mật" khi sử dụng tài khoản SMTP. Hãy chắc chắn bạn đã kích hoạt tính năng này.
  • Mã hóa dữ liệu nhạy cảm: Mật khẩu và thông tin đăng nhập không nên được lưu trực tiếp trong mã nguồn. Sử dụng biến môi trường (environment variables) hoặc file cấu hình ngoài để quản lý các thông tin nhạy cảm này.

Chỉ với vài bước cơ bản, bạn đã sẵn sàng để gửi email với tệp đính kèm sử dụng thư viện PHPMailer trong PHP. Điều này giúp mã PHP của bạn trở nên mạnh mẽ và chuyên nghiệp hơn.

Comments