آموزش ارسال ایمیل در لاراول ۹ با SMTP
سلام
در لاراول از سرویس های مختلفی میتونیم برای ارسال ایمیل استفاده کنیم، مانند SMTP, Amazon SES, sendmail, Postmark و Mailgun که در این آموزش میخواهیم بپردازیم به سرویس SMTP که بسیار پرکاربرد می باشد که اگر هاست یا جیمیل داشته باشید میتونید از این روش برای ارسال ایمیل در لاراول ۹ استفاده کنید، در ادامه همراه بپرسم باشید.
مراحل ارسال ایمیل در لاراول ۹
برای ارسال ایمیل در لاراول ۹ با استفاده از SMTP، مراحل ساده زیر را دنبال کنید:
- Laravel 9 را نصب و SMTP را پیکربندی کنید
- یک کلاس ایمیل ایجاد کنید
- یک کنترلر ایمیل ایجاد کنید
- یک فهرست ایمیل و Blade View ایجاد کنید
- یک مسیر ارسال ایمیل اضافه کنید
- برنامه را اجرا و تست کنید
مرحله اول: نصب لاراول ۹ و پیکربندی SMTP
اول از همه، با اجرای دستور زیر در خط فرمان یا ترمینال، یک نسخه جدید از Laravel 9 Framework را نصب می کنم.
۱ |
composer create-project --prefer-dist laravel/laravel sendEmail |
اجباری به استفاده از لاراول ۹ نیست، در تمامی نسخه های لاراول میتونید از این روش استفاده کنید
اکنون با اجرای دستور زیر به دایرکتوری برنامه خود بروید.
۱ |
cd sendEmail |
زمانی که لاراول با موفقیت نصب شد، SMTP را پیکربندی میکنم و تمام اعتبارنامههایی را که توسط لاراول برای ارسال ایمیل استفاده میشود، تنظیم میکنم.
برای پیکربندی Gmail SMTP، تغییرات را در فایل .env خود به صورت زیر انجام دهید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=۴۶۵ MAIL_USERNAME=your_email@gmail.com MAIL_PASSWORD=your_password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=your_email@gmail.com MAIL_FROM_NAME="${APP_NAME}" |
توجه: اگر از Gmail برای ارسال ایمیل خود استفاده میکنید، باید از اینجا https://myaccount.google.com/u/1/lesssecureapps دسترسی را از تنظیمات حساب Gmail خود فعال کنید.
اگر از SMTP هاست خود میخواید استفاده کنید، پیکربندی فایل env. باید به صورت زیر باشد:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=۴۶۵ MAIL_USERNAME=your_email@gmail.com MAIL_PASSWORD=your_password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=your_email@gmail.com MAIL_FROM_NAME="${APP_NAME}" |
مرحله دوم: یک کلاس ایمیل ایجاد کنید
اکنون، یک کلاس Mail با نام SendMail برای ارسال ایمیل آزمایشی خود ایجاد خواهم کرد. با این کار، نمای ایمیل آزمایشی فراخوانی می شود.
برای ایجاد کلاس Mail دستور زیر را اجرا کنید.
۱ |
php artisan make:mail SendMail |
اکنون کد فایل app/Mail/SendMail.php را به صورت زیر به روز کنید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ |
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class SendMail extends Mailable { use Queueable, SerializesModels; public $testMailData; /** * Create a new message instance. * * @return void */ public function __construct($testMailData) { $this->testMailData = $testMailData; } /** * Build the message. * * @return $this */ public function build() { return $this->subject('Email From beporsam.ir') ->view('emails.testMail'); } } |
مرحله سوم: یک کنترلر ایمیل ایجاد کنید
در این مرحله یک کنترلر با نام EmailController با متد ()index ایجاد می کنم که ایمیلی را به آدرس ایمیل مورد نظر شما ارسال می کند.
دستور زیر را برای ایجاد یک کنترلر ایمیل اجرا کنید.
۱ |
php artisan make:controller EmailController |
حالا کد app/Http/Controllers/EmailController.php را به صورت زیر به روز کنید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mail; use App\Mail\SendMail; class EmailController extends Controller { public function index() { $testMailData = [ 'title' => 'Test Email From beporsan.ir', 'body' => 'This is the body of test email.' ]; Mail::to('your_email@gmail.com')->send(new SendMail($testMailData)); dd('Success! Email has been sent successfully.'); } } |
مرحله چهارم: یک فهرست ایمیل و Blade View ایجاد کنید
در این مرحله، یک دایرکتوری ایمیل در دایرکتوری sources/views ایجاد میکنم و سپس یک فایل blade ایمیل جدید با نام testMail.blade.php ایجاد میکنم و کد زیر را در این فایل: source/views/emails/testMail.blade.php قرار میدهم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
<!DOCTYPE html> <html> <head> <title>beporsam.ir</title> </head> <body> <h1>{{ $testMailData['title'] }}</h1> <p>{{ $testMailData['body'] }}</p> </body> </html> |
مرحله پنجم: مسیر ارسال ایمیل را اضافه کنید
در این مرحله، یک مسیر وب ایجاد می کنم که ایمیل آزمایشی را ارسال می کند، کد زیر را در فایل routes/web.php اضافه می کنم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ |
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\EmailController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/send-email', [EmailController::class, 'index']); |
مرحله ششم: برنامه را اجرا و تست کنید
اکنون، من تمام مراحل لازم برای ارسال یک ایمیل از لاراول ۹ را با استفاده از Gmail SMTP و میزبان وب سایت شما SMTP انجام دادهام. زمان راهاندازی سرور توسعه و تست برنامه است.
دستور زیر را برای اجرای برنامه در ترمینال یا CMD وارد کنید:
۱ |
برای اجرای سرور توسعه، دستور زیر را اجرا کنید. |
۱ |
php artisan serve |
اکنون به مرورگر بروید و آدرس زیر را بزنید تا ایمیلی از لاراول ۹ با استفاده از SMTP ارسال کنید.
۱ |
http://localhost:8000/send-emailphp artisan serve |
ایمیلی مانند زیر دریافت خواهید کرد.
به همین سادگی توانستید تا پیکربندی ارسال ایمیل را در لاراول انجام دهید، چنانچه مشکلی با ارسال ایمیل در لاراول داشتید میتوانید سوال خود را از بخش پرسش و پاسخ سایت و یا از طریق بخش گفتگوی آنلاین با ما در میان بزارید 🙂
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید