اتصال به ایمیل‌سرور در برنامه‌های PHP


پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

برای استفاده از سرویس ایمیل در برنامه‌های PHP، می‌توانید از پکیج phpmailer استفاده کنید که بایستی با دستور زیر، آن را در پروژه خود، نصب کنید:
کپی
composer require phpmailer/phpmailer
# composer require vlucas/phpdotenv phpmailer/phpmailer # for dotenv
پس از آن، کافیست تا طبق مستندات SMTP، یک دسترسی SMTP و طبق مستندات افزودن نشانی، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید. در نهایت نیز، بایستی اطلاعات مربوط به ایمیل‌سرور خود را به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:
کپی
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=465
MAIL_USER=happy_motse_sng2rc
MAIL_PASSWORD=6e5617f9-19ab-4c93-b0ca-34ec7312c387
MAIL_FROM_ADDRESS=info@example.com
MAIL_FROM_NAME=my-app

مقدار فیلد MAIL_FROM_ADDRESS باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.

در نهایت می‌توانید در پروژه‌ی خود مانند مثال زیر عمل کرده و با استفاده از دسترسی SMTP سرویس ایمیل لیارا، اقدام به ارسال ایمیل‌های تراکنشی کنید:
کپی
<?php

require 'vendor/autoload.php';

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
use DotenvDotenv;

// Load environment variables from .env
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

// PHPMailer Configuration
$mail = new PHPMailer(true);

try {
    // Server settings
    $mail->isSMTP();
    $mail->Host = $_ENV['MAIL_HOST'];
    $mail->SMTPAuth = true;
    $mail->Username = $_ENV['MAIL_USER'];
    $mail->Password = $_ENV['MAIL_PASSWORD'];
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Force SMTPS (TLS encryption)
    $mail->Port = $_ENV['MAIL_PORT'];

    // Sender and recipient
    $mail->setFrom($_ENV['MAIL_FROM_ADDRESS'], $_ENV['MAIL_FROM_NAME']);
    $mail->addAddress('test@example.com', 'Recipient Name');

    // Content
    $mail->isHTML(true);
    $mail->Subject = 'Test Email';
    $mail->Body = '<h1>Hello from PHPMailer!</h1><p>This is a test email using SMTP.</p>';
    $mail->AltBody = 'Hello from PHPMailer! This is a test email using SMTP.';
    $mail->addCustomHeader('x-liara-tag', 'test-tag'); // use Liara Tags
    
    // Send the email
    $mail->send();
    echo 'Email sent successfully!';
} catch (Exception $e) {
    echo "Email could not be sent. Mailer Error: {$mail->ErrorInfo}";
}