درس 22 - آموزش ارسال ایمیل در لاراول

آموزش ارسال Email در فریمورک Laravel 

فریمورک لاراول برای ارسال ایمیل از یک کتابخانه ی رایگان به نام SwiftMailer استفاده میکند. استفاده از توابع این کتابخانه باعث میشود بدون دردسر خاصی به ارسال ایمیل در فریمورک لاراول بپردازید.

شما میتوانید برای ساخت قابل ایمیل از view های لاراولی استفاده کنید یعنی شما میتوانید از تمپلیت های Blade یا تمپلیت انجین Blade استفاده کنید تا قالب ایمیل بسازید.

در جدول زیر ویژگی ها و امکاناتی که متود send برای شما فراهم میکند را میبینید.

در سومین آرگومان مشاهده میکنید متغیری به نام $callback وجود دارد که یک instance از message است که یک سری توابع کمکی برای تعیین دریافت کننده و موضوع ایمیل و ... را میتوانید تنظیم کنید.

در زیر مثال استفاده از این instance را مشاهده میکنید.

 

  • $message → subject('Welcome to the Tutorials Point');
  • $message → from('email@example.com', 'Mr. Example');
  • $message → to('email@example.com', 'Mr. Example');

 

در زیر متود های غیررایج که میتوانید استفاده کنید نیز لیست شده است : 

 

  • $message → sender('email@example.com', 'Mr. Example');
  • $message → returnPath('email@example.com');
  • $message → cc('email@example.com', 'Mr. Example');
  • $message → bcc('email@example.com', 'Mr. Example');
  • $message → replyTo('email@example.com', 'Mr. Example');
  • $message → priority(2);

 

برای ضمیمه کردن فایل هایی به ایمیل ، میتوانید از متود های زیر نیز استفاده کنید : 

 

  • $message → attach('path/to/attachment.txt');
  • $message → embed('path/to/attachment.jpg');

 

ارسال ایمیل در فریمورک لاراول میتواند به دو شیوه ی HTML یا text خالی اتفاق بیوفتد.  شما میتوانید نوع ارسال ایمیل را در اولین آرگومان متود send مشخص کنید که در زیر مثالی از آن آورده شده است.

توجه کنید که بصورت پیشفرض ارسال ایمیل در فریمورک لاراول روی HTML است.

اگر قصد داشته باشید ایمیل را بصورت text خالی ارسال کنید اولین آرگومان را به شکل زیر عوض کنید.

Mail::send([‘text’=>’text.view’], $data, $callback);

در مثال بالا دیدید که متود send در اولین آرگومان خود یک آرایه قبول میکند که نام مقدار text است و خود مقدار نشان دهنده این است که این ایمیل از نوع text است.

در ادامه مثال از ارسال ایمیل در فریمورک لاراول برای شما آماده کرده ایم.

قدم 1 - ما قصد داریم ایمیل تستی خود را از طریق Gmail ارسال کنیم پس باید تنظیمات مربوط به جیمیل را در فایل  .env تنظیم کنیم

سپس رمز دو مرحله ای را در جیمیل خود فعال کنید و پسورد خود را با تنظیمات env که در زیر مثالش امده است تنظیم کنید.

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

قدم 2 - بعد از اینکه تنظیمات ایمیل در لاراول و فایل env خود را انجام دادید برای اینکه کش لاراول پاکسازی شود از دستور زیر استفاده کنید که باید در ترمینال یا کامند پرومپ وارد کنید.

php artisan config:cache

قدم 3 - از طریق اجرای دستور زیر در ترمینال یک کنترلر جدید در لاراول خود به نام MailController بسازید.

php artisan make:controller MailController --plain

 قدم 4 - بعد از اجرای موفقیت آمیز دستور بالا نتیجه ی مشاهده شده در ترمینال باید مشابه تصویر زیر باشد.

آموزش ارسال ایمیل در فریمورک لاراول

قدم 5 - کدهای زیر را در کنترلر جدید ساخته شده که در مسیر app/Http/Controllers/MailController.php است بنویسید.

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

قدم 6 ام - کدهای زیر را در فایل ویوی لاراول خود در مسیر resources/views/mail.blade.php بنویسید.

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

قدم 7 ام - فایل route های فریمورک لاراول خود را باز کنید و روت های زیر را درون این فایل نویسید .

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

قدم 8 ام - بعد از اجرای دستور php artisan serve از طریق مرورگر به آدرس url زیر مراجعه کنید.

http://localhost:8000/sendbasicemail

قدم 9 ام - خروجی باید مشابه تصویر زیر باشد ، اینباکس یا صندوق ورودی خود را بررسی کنید تا نتیجه ی خروجی basic email را ببینید.

آموزش ارسال ایمیل در فریمورک لاراول

قدم 10 - برای تست کردن ایمیل از نوع HTML از طریق مرورگر به url زیرمراجعه کنید.

http://localhost:8000/sendhtmlemail

قدم 11 - خروجی باید به شکل زیر باشد اینباکس خود را بررسی کنید تا مشاهده کنید.

آموزش ارسال ایمیل html در فریمورک لاراول

قدم 12 - به آدرس زیر مراجعه کنید تا ارسال ایمیل بصورت HTML و ضمیمه را تست کنید.

http://localhost:8000/sendattachmentemail

قدم 13 - نتیجه ی خروجی باید مشابه تصویر زیر باشد :‌ 

آموزش ارسال ضمیمه و فایل در ایمیل لاراول

نکته : توجه کنید ایمیلی که در کنترلر MailController.php قرار داده ایم تستی هست و باید ایمیل خود را جایگزین کنید تا ایمیل به اینباکس خودتان بیاید. 

اتمام درس