در این درس می خواهیم ارسال ایمیل با لاراول را یاد بگیریم. در این برنامه می توانیم به خودمان یا شخص دیگری ایمیل بفرستیم. با استفاده از امکانات داخلی Laravel می توانیم ارسال ایمیل داشته باشیم.
برای ارسال ایمیل با لاراول یک کلاس برای این کار ایجاد می کنیم. هنگامی که این کلاس ساخته شد، باید پیکربندی ایمیل مانند نام میزبان، پورت، درایور، نام کاربری و جزئیات رمز عبور را در فایل env تعریف کنیم. در زیر می توانید مراحل ارسال ایمیل با لاراول به ساده ترین روش را بیاموزید.
برای نوشتن برنامه ارسال ایمیل با لاراول پیش نیازهایی لازم است. در اینجا به آشنایی با PHP و Laravel نیاز داریم. افزون بر دانش برنامه نویسی و تسلط بر Laravel باید xampp و composer در سیستم شما نصب شده باشد. برای دانلود xampp به نشانی و برای دانلود composer به نشانی مراجعه کنید.
با دنبال کردن گام های زیر می توانید فرستادن ایمیل با laravel را بیاموزید.
پس از نصب composer و xampp باید یک پروژه laravel ایجاد کنیم. برای این کار به محل مورد نظر برای نصب پروژه می رویم. هر جایی که خواستید می توانید پروژه خود را ایجاد کنید. من آن را در Desktop خود ایجاد می کنم. برای نصب برنامه به ترمینال یا cmd خود نیاز داریم. برای باز شدن cmd کلیدهای ترکیبی win+R را فشار می دهیم تا پنجره زیر نمایش داده شود:
OK را می زنیم تا cmd نمایش داده شود:
از طریق cmd وارد جایی که می خواهیم می شویم. من می خواهم برنامه در Desktop باشد، پس با دستور cd Desktop وارد آن می شوم. سپس دستور زیر را در آن می نویسم:
composer create-project laravel/laravel send_email
اگر همه چیز به درستی پیش رفته باشد، دانلود پروژه انجام خواهد شد و باید تصویری مانند زیر ببینیم:
برای اجرای پروژه ابتدا باید وارد پوشه ایجاد شده که در اینجا send_email نام دارد شویم سپس باید دستور php artisan serve را در cmd بنویسیم:
اگر به آدرس http://127.0.0.1:8000 برویم باید تصویر زیر را ببینیم:
کنترلرها یکی دیگر از ویژگی های لاراول هستند. به جای تعریف منطق request در فایل های مسیر، می توان این کار را با کمک کلاس های Controller سازماندهی کرد. کنترلرها به منظور گروه بندی منطق رسیدگی به درخواست هایی که به هم مرتبط هستند در یک کلاس واحد قرار می گیرند. در پروژه لاراول، آن ها در دایرکتوری app/Http/Controllers ذخیره می شوند. فرم کامل MVC ،Model View Controller است.
برای ساخت کنترلر برای ارسال ایمیل از دستور زیر استفاده می کنیم:
php artisan make:controller MailController
MailController نام کنترلر است. اگر همه چیز به خوبی پیش رفته باشد باید تصویر زیر را ببینیم:
لاراول یک API ایمیل ساده و تمیز ارائه می دهد که توسط کتابخانه محبوب SwiftMailer پشتیبانی می شود. لاراول و SwiftMailer درایورهایی را برای ارسال ایمیل از طریق SMTP، Mailgun، Postmark، Amazon SES و sendmail ارائه میکنند و به شما این امکان را میدهند ایمیل خود را ارسال کنید.
برای ساخت Mail از دستور زیر استفاده می کنیم:
php artisan make:mail TestMail
نام کلاس Mail خود را TestMail گذاشته ایم. اگر همه چیز به خوبی پیش رفته باشد باید تصویر زیر را ببینیم:
پوشه send_mail ایجاد شده را در ویرایشگر کد خود باز کنید. برای ارسال ایمیل باید .env فایل را پیکربندی کنیم و تغییرهایی را در آن به وجود آوریم. تغییرهای شما باید مطابق با تصویر زیر باشد:
در ادامه باید گزینه Less secure apps & your Google Account را در account google خود فعال کنید. اگر این کار را نکنید ایمیل فرستاده نخواهد شد. برای این کار باید وارد این لینک شوید. سپس مطابق تصویر زیر عمل می کنیم:
کد زیر را در MailController.php که در app\Http\Controllers است قرار می دهیم:
<?php namespace App\Http\Controllers; use App\Mail\TestMail; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; class MailController extends Controller { public function sendEmail(){ $details=[ 'title' => 'Sending Mail', 'body' => 'this is for testing using gmail' ]; Mail::to("example@gmail.com")->send(new TestMail($details)); return "Email Send"; } }
در کد بالا در قسمت ()Mail::to باید نشانی ایمیلی که می خواهید به آن ایمیل بفرستید را بنویسید.
حالا نوبت افزودن مسیر است. برای این کار وارد پوشه routes می شویم و فایل web.php را باز می کنیم:
کدهای زیر را در فایل web.php وارد می کنیم:
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\MailController; /* |-------------------------------------------------------------------------- | 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('/', function () { return view('welcome'); }); Route::get('/send-mail',[MailController::class,'sendEmail']);
در بالا با Route::get مسیر خود را که send-mail است تعریف می کنیم و کنترلر را که قبلا تعریف کرده بودیم برای آن درنظر می گیریم. این کنترلر را با دستور زیر وارد کرده ایم:
use App\Http\Controllers\MailController;
کد زیر را در TestMail.php که در app\Http\Mail است قرار می دهیم:
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class TestMail extends Mailable { use Queueable, SerializesModels; public $details; /** * Create a new message instance. * * @return void */ public function __construct($details) { $this->details = $details; } /** * Build the message. * * @return $this */ public function build() { return $this->subject('Send Email With Laravel')->view('emails.TestMail'); } }
در اینجا می خواهیم یک view بسازیم. اگر ایمیل با موفقیت ارسال شود این view را خواهیم دید. برای این کار وارد پوشه resources\views می شویم و یک پوشه جدید به نام emails ایجاد می کنیم. داخل این پوشه فایل TestMail.blade.php را ایجاد می کنیم:
کد زیر را وارد این فایل می کنیم:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Send Email With Laravel</title> </head> <body> <h1>{{$details['title']}}</h1> <p>{{$details['body']}}</p> <p>Thank You</p> </body> </html>
برای ارسال ایمیل xampp باید روشن یا در حال کار کردن باشد. با دستور php artisan serve برنامه را اجرا می کنیم و پس از آن وارد http://localhost:8000 می شویم. جلوی این آدرس /send-mail را می نویسیم، مانند:
سپس Enter را می زنیم تا درخواست فرستاده شود. اگر درخواست به درستی فرستاده شود باید تصویر زیر را ببینیم:
حال اگر به شخصی که ایمیل فرستادیم بخواهیم ایمیل خود را بررسی کند باید تصویر زیر را ببیند:
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.