ارسال ایمیل در لاراول با Gmail SMTP

برای ارسال ایمیل از لاراول می‌توانید از SMTP استفاده کنید. این راهنما برای آزمایش با حساب Gmail است؛ تحویل به صندوق ورودی تضمین نمی‌شود و سرویس‌دهندهٔ ایمیل، محدودیت ارسال و اعتبار فرستنده در نتیجه اثر دارند.

📩 با عضویت در خبرنامه، جدیدترین مطالب و آموزش‌ها را مستقیم در ایمیل خود دریافت کنید.

خبرنامه

ورود به حساب Gmail

راهنمای قدیمی فعال‌کردن «Less secure apps» معتبر نیست. برای اتصال SMTP با نام کاربری و رمز، در حساب‌های واجد شرایط از App Password استفاده کنید؛ رمز معمول حساب را در پروژه قرار ندهید. App Password به تأیید دومرحله‌ای نیاز دارد و ممکن است برای بعضی حساب‌های سازمانی یا تنظیمات امنیتی ارائه نشود. در این حالت، روش مورد تأیید سرویس‌دهنده یا اتصال OAuth را بررسی کنید. راهنمای رسمی Google.

تنظیمات SMTP در لاراول

مقادیر نمونه را در .env قرار دهید. نام متغیرهای مورد استفاده را در config/mail.php پروژهٔ خود بررسی کنید؛ تنظیمات نسخه‌های قدیمی و جدید یکسان نیستند.

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-account@gmail.com
MAIL_PASSWORD="YOUR_APP_PASSWORD"
MAIL_FROM_ADDRESS=your-account@gmail.com
MAIL_FROM_NAME="My Application"

پورت ۵۸۷ برای اتصال SMTP با STARTTLS به کار می‌رود. در پروژه‌هایی که MAIL_ENCRYPTION دارند، مقدار tls را مطابق تنظیمات mailer انتخاب کنید. در نسخه‌های مبتنی بر Symfony Mailer، رفتار STARTTLS و گزینهٔ scheme را با تنظیمات همان نسخه تطبیق دهید؛ نام متغیری که config آن را نمی‌خواند اثر ندارد.

پس از تغییر تنظیمات در محیط توسعه، کش تنظیمات را پاک کنید:

php artisan config:clear

ارسال یک ایمیل آزمایشی

کد زیر را فقط در محیط توسعه یا مسیر کنترل‌شدهٔ خود اجرا کنید. آدرس گیرنده و فرستنده باید متعلق به سناریوی آزمایش شما باشد؛ یک مسیر عمومی برای ارسال دلخواه ایمیل ایجاد نکنید.

use Illuminate\Support\Facades\Mail;

Mail::raw('This is a test email.', function ($message) {
    $message->to('recipient@example.com')
        ->subject('Laravel SMTP test');
});

اگر ایمیل ارسال نشد

خطای اتصال، خطای احراز هویت و رسیدن ایمیل به پوشهٔ اسپم سه مسئلهٔ متفاوت‌اند. دسترسی شبکه به پورت SMTP، تنظیمات حساب و لاگ برنامه را بررسی کنید. برای ارسال‌های واقعی از Mailable و صف‌ها استفاده کنید و محدودیت سرویس را در نظر بگیرید. .env و App Password نباید در مخزن عمومی یا خروجی خطا منتشر شوند.

مرجع: مستندات رسمی؛ نسخهٔ مستندات را با نسخهٔ پروژهٔ خود تطبیق دهید.

بروزرسانی‌های خبرنامه

آدرس رایانامه‌ی خود را در زیر وارد کنید و مشترک خبرنامه‌ی ما شوید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *