رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش ارسال ایمیل در لاراول 5
#1
در لاراول ۵ شما به راحتی می توانید با استفاده از کلاس Facade Mail یک ایمیل را ارسال کنید. توی این بخش هم میخوام به صورت کاربردی نحوه ارسال ایمیل را برایتان توضیح بدهم. فرض میکنیم یک فرم تماس با ما داریم که میخواهیم بعد از تکمیل ان توسط کاربر به ایمیل مدیر سایت ارسال شود. 

ابتدا باید در فایل env. تنظیمات مربوط به ایمیل هاست خود را ست کنید. در این مثال من تنظیمات جیمیل خودم را قرار دادم :

کد:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=**********@gmail.com
MAIL_PASSWORD=************


همچنین در پوشه config و فایل mail.php هم می توانید تنطیمات بیشتری را اعمال کنید.


حالا دوتا مسیر توی فایل routes.php ایجاد میکنیم :

کد پی‌اچ‌پی:
Route::get('contact-me', ['as' => 'contact''uses' => 'ContactController@contactForm']);
 
Route::post('contact-me', ['as' => 'contact_send''uses' => 'ContactController@contactSend']); 


همانطور که مشاهده میکنید برای هر مسیر یک نام انتخاب کردم و همچنین به کنترلر ContactController و اکشن contactForm برای درخواست های GET و اکشن contactSend برای درخواست های POST نیاز داریم. متد contactForm را به این صورت می نویسیم :

کد پی‌اچ‌پی:
public function contactForm()
 
   {
 
       return view('emails.contact');
 
   


همانطور که مشخص کردیم باید فرم تماس با ما را در پوشه emails و فایل contact.blade.php در مسیر resources/views ذخیره میکنیم و کدهای زیر را داخل آن قرار می دهیم:


کد پی‌اچ‌پی:
<!DOCTYPE html>
<
html lang="en">
<
head>
 
 <meta charset="UTF-8">
 
 <title>Contact</title>
</
head>
<
body>
<
h1>Contact Me</h1>
<
form action="{{ route('contact_send') }}" method="POST">
 
   <input type="hidden" value="{{ csrf_token() }}" name="_token">

 
   <label for="name">Your Name: </label>
 
   <input type="text" name="name" id="name" value="{{ old('name') }}"> <span class="error">{{ $errors->first('name') }}</span> <br>

 
   <label for="email">Your Email: </label>
 
   <input type="email" name="email" id="email" value="{{ old('email') }}"> <span class="error">{{ $errors->first('email') }}</span> <br>

 
   <label for="message">Message:</label>
 
   <textarea name="message" id="message">{{ old('message') }}</textarea> <span class="error">{{ $errors->first('message') }}</span> <br>
 
   
    
<input type="submit" value="Send">
</
form 

@if (Session::has('message'))
 
 {{ Session::get('message') }}
@endif
</
body>
</
html

توی این مثال از ویژگی کلاس Request هم برای اعتبارسنجی استفاده میکنیم. پس با دستور زیر یک کلاس Request ایجاد میکنیم :

کد پی‌اچ‌پی:
php artisan make:request ContactFormRequest 


این کلاس در مسیر app/Http/Requests ایجاد می شود. آن را باز کرده و در متد rules آن قوانین اعتبارسنجی فرمتان را تعیین کنید.

کد پی‌اچ‌پی:
public function rules()
{
 
 return [
 
   'name' => 'required',
 
   'email' => 'required|email',
 
   'message' => 'required',
 
 ];



همچنین متد authorize را که به طور پیش فرض false برمیگرداند true کنید چون نیازی به اهراز هویت در این درخواست نداریم. خب با این کار دیگه نیازی نیست تو کنترلر اعتبارسنجی انجام بدیم فقط کافیه این کلاسی که ساختیم رو به عنوان پارامتر به متد contactSend بدهیم :


کد:
public function contactSend(ContactFormRequest $request)
   {
       extract($request->all());

       Mail::send('emails.email',
           array(
               'name' => $name,
               'email' => $email,
               'content' => $message
           ), function($message) use($email, $name) {

               $message->from($email, $name);
               $message->to('example@gmail.com')->subject('Test Email');
       });

             return Redirect::route('contact')->with('message', 'Thanks for contacting us!');
   }




به این متد فقط درخواست های اعتبارسنجی شده وارد می شوند و اعتبارسنجی داخل کلاس ContactFormRequest انجام می شود. ابتدا همه داده های فرم که به صورت آرایه هست را با دستور extract تبدیل به متغیر کردم و با استفاده از کلاس Mail و متد send ایمیل را ارسال میکنیم. متد send سه تا پارامتر میگیره که اولی یک فایل وبو هست که داخل آن محتویات html برای ارسال فرم را تولید میکنیم و پارامتر دوم داده هایی که نیاز داریم به آن فابل ویو ارسال کنیم را در قالب آرایه میفرستیم و در پارامتر سوم هم یک [url=http://php.net/manual/en/functions.anonymous.php][/url]تابع بی نام ایجاد کرده و اطلاعات فرستنده و گیرنده نامه را تعیین میکنیم. در متد from نام و ایمیل فرستنده و در متد to ایمیل گیرنده نامه و در متد subject موضوع نامه را تعیین میکنیم. 

در نهایت به صفحه تماس با ما ریدایرکت میکنیم و پیغامی را هم ارسال و چاپ میکنیم. 
همچنین باید یک فایل ویو که در متد send آن را به عنوان پارامتر اول دادیم هم در پوشه emails ایجاد کنیم. پس نام آن را email.blade.php قرار می دهیم و محتویات زیر را داخل آن می نویسیم :


کد پی‌اچ‌پی:
You received a message from hamo.ir:

<
p>
Name: {{ $name }}
</
p>

<
p>
Email address :{{ $email }}
</
p>

<
p>
 
   {{ $content }}
</
p
(با تشکر از حامد آریان)
قوانین انجمن لاراولیستا  | شماره تماس :‌09124783045 |‌ تلگرام :‌ 09377869283
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  تغییر نکردن محتوای صفحه پس از ارسال id mahsandr 0 47 11-24-2016, 03:31 PM
آخرین ارسال: mahsandr
  آموزش اعتبار سنجی در لاراول 5 alihossein 4 773 11-20-2016, 07:12 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش روتینگ routing در لاراول 5 alihossein 2 1,129 11-12-2016, 04:37 AM
آخرین ارسال: حمید رﺽا کمالی
  مشکل در ارسال داده به پایگاه داده 111r11v11n 2 64 10-31-2016, 05:23 AM
آخرین ارسال: LavarelUser
  آموزش کار با دیتابیس در لاراول 5 alihossein 6 1,555 10-27-2016, 01:01 PM
آخرین ارسال: sempaisaleh
  ارسال ایمیل زهرا 0 40 10-09-2016, 06:51 AM
آخرین ارسال: زهرا
  ارور در هنگام ارسال ایمیل BangShut 0 48 09-19-2016, 12:34 PM
آخرین ارسال: BangShut
  آموزش Migration در لاراول 5 alihossein 9 1,167 08-15-2016, 04:17 PM
آخرین ارسال: Naser.SherafatiNia
  آموزش فارسی لاراول ۵ alihossein 4 2,865 07-22-2016, 04:16 PM
آخرین ارسال: elham_malekmohamadi
  ارسال ایمیل تایید هویت به کاربر leila 5 270 05-03-2016, 10:48 AM
آخرین ارسال: leila

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.