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


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

برای استفاده از سرویس ایمیل در برنامه‌های Laravel، کافیست تا طبق مستندات SMTP، یک دسترسی SMTP و طبق مستندات افزودن نشانی، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید. در نهایت نیز، بایستی اطلاعات مربوط به ایمیل‌سرور خود را به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:

کپی
MAIL_MAILER=smtp
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=587
MAIL_USERNAME=magical_benz_7s4t7p
MAIL_PASSWORD=9aaf526a-3352-4d96-99b1-63af70c696e2
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@example.com
MAIL_FROM_NAME="${APP_NAME}"

با تنظیم MAIL_ENCRYPTION=tls، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.

برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا به جای STARTTLS، از TLS استفاده شود.

در نظر داشته باشید که باید فایل config/mail.php، شامل قطعه کد زیر، باشد:

کپی
<?php

return [

    'default' => env('MAIL_MAILER', 'log'),

    'mailers' => [

        'smtp' => [
            'transport' => 'smtp',
            'url' => env('MAIL_URL'),
            'host' => env('MAIL_HOST', '127.0.0.1'),
            'port' => env('MAIL_PORT', 2525),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
        ],

    ],

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

];

در ادامه، بایستی با اجرای دستوری مشابه دستور زیر، یک Mailable ایجاد کنید:

کپی
php artisan make:mail TestEmail

پس از ایجاد Mailable در آدرس app/mail/TestEmail.php، می‌توانید قطعه کد زیر را، در آن، قرار دهید:

کپی
<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Mail\Mailables\Headers;

class TestEmail extends Mailable
{
    use Queueable, SerializesModels;

    public function build()
    {
        return $this->subject('Test Email')
                    ->view('emails.test');

    }

    public function headers(): Headers
    {
        return new Headers(
            text: [
                'x-liara-tag' => 'test_email',
            ],
        );
    }


}

سپس، می‌توانید یک قالب ایمیل با نام test.blade.php در مسیر resources/views/emails ایجاد کنید و قطعه کد زیر را، در آن، قرار دهید:

کپی
<!DOCTYPE html>
<html>
<head>
    <title>Test Email</title>
</head>
<body>
    <h1>This is a test email from Laravel</h1>
    <p>Sent via SMTP on Liara's server.</p>
</body>
</html>

سپس، در routes/web.php مسیر زیر را برای ارسال ایمیل اضافه کنید:

کپی
use App\Mail\TestEmail;
use Illuminate\Support\Facades\Mail;
Route::get('/send-test-email', function () {
    Mail::to('test@example.com')->send(new TestEmail());
    return 'Test email sent successfully!';
});

با انجام کارهای فوق، می‌توانید از ایمیل‌سرور در برنامه خود در صفحه send-test-email/، برای ارسال ایمیل، استفاده کنید.