فهرست:
آشنایی با کتابخانه SwiftMailer
لاراول از كتابخانه حرفه ای SwiftMailer
برای ارسال ایمیل استفاده می كند. با استفاده از این کتابخانه، می توانیم به راحتی در لاراول ایمیل ارسال کنید. در لاراول شما می توانید قالب ایمیل مورد نظر خود را به روال قبل در قسمت View پیاده سازی کرده و از موتور Blade بهرمند گردید. در این کتابخانه Syntax متد Send و آرگومان های دریافتی آن بصورت زیر است.
- آرگومان
$view
که می تواند از نوع string|array
باشد برای تعیین view
مورد نظر برای قالب ایمیل می باشد. - آرگومان
$data
که نوع آن باید بصورت array
باشد برای ارسال متغییر ها به view
مورد نظر است. - آرگومان
$callback
به شما این امکان را می دهد که دریافت کنندگان ایمیل، موضوع ایمیل و سایر موارد مربوط به پیغام ایمیل خود را سفارشی سازی کنید.
void send(string|array $view, array $data, Closure|string $callback)
در آرگومان سوم
$callback
شما قادرید یک instance از
$message
را دریافت کرده و بصورت دلخواه آن را شخصی سازی نمایید بخ حالت های زیر دقت کنید.
$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 ارسال شود، نوع پیش فرض ارسال بصورت HTML است. اگر می خواهید نامه بصورت متنی ساده ارسال شود بصورت زیر اقدام نمایید.
Mail::send(['text'=>'text.view'], $data, $callback);
در مثال بالا آرگومان اول بصورت
array
دریافت می شود و در آن حال ارسال ایمیل بصورت text تنظیم شده است.
مثال کاربردی برای ارسال ایمیل در لاراول
برای درک بهتر توضیحات بالا به ذکر یک مثال کاربردی می پردازیم برای این منظور ما قصد داریم از لاراول برای ارسال ایمیل از حساب کاربری 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
پس از تغییر فایل
.env
دستور زیر را برای پاک کردن حافظه پنهان و راه اندازی مجدد سرور Laravel اجرا کنید.
حال برای ایجاد کنترلر
MailController
از خط فرمان زیر استفاده کنید.
php artisan make:controller MailController --plain
بعد از اجرای دستور بالا فایل
MailController.php
ایجاد می شود آن را بصورت زیر تغییر دهید.
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'=>"Name Family");
Mail::send(['text'=>'mail'], $data, function($message) {
$message->to('abc@gmail.com', 'Your Subject')->subject
('Laravel Basic Testing Mail');
$message->from('xyz@gmail.com','Sender name');
});
echo "Basic Email Sent. Check your inbox.";
}
public function html_email() {
$data = array('name'=>"Name Family");
Mail::send('mail', $data, function($message) {
$message->to('abc@gmail.com', 'Your Subject')->subject
('Laravel HTML Testing Mail');
$message->from('xyz@gmail.com','Sender name');
});
echo "HTML Email Sent. Check your inbox.";
}
public function attachment_email() {
$data = array('name'=>"Name Family");
Mail::send('mail', $data, function($message) {
$message->to('abc@gmail.com', 'Your Subject')->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','Sender name');
});
echo "Email Sent with attachment. Check your inbox.";
}
}
حال یک قالب ساده برای ایمیل مورد نظر خود در فایل
mail.blade.php
بصورت زیر بسازید.
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
سپس فایل روت را بصورت زیر ویرایش نمایید.
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');
حال برای ارسال یک ایمیل ساده از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد.
http://localhost:8000/sendbasicemail
Basic Email Sent. Check your inbox.
برای ارسال یک ایمیل با فرمت HTML از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد.
http://localhost:8000/sendhtmlemail
HTML Email Sent. Check your inbox.
و برای ارسال یک ایمیل همراه با فایل ضمیمه از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد.
http://localhost:8000/sendattachmentemail
Email Sent with attachment. Check your inbox.