رتبه موضوع:
  • 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 |‌ مدیریت کانال تلگرام
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  صفحه بندی در لاراول ۵.۵ sadaf 0 47 10-26-2017, 09:26 PM
آخرین ارسال: sadaf
  سرور برای لاراول mahmood_20050 0 32 10-24-2017, 10:00 AM
آخرین ارسال: mahmood_20050
  گرفتن آپدیت های وب هوک تلگرام در لاراول Mr.AMiR 6 253 09-19-2017, 04:30 AM
آخرین ارسال: Bvk.Programmer
  خطای نصب لاراول dmbehrouz 0 45 09-07-2017, 01:11 PM
آخرین ارسال: dmbehrouz
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 1 109 08-31-2017, 08:40 AM
آخرین ارسال: imanghafoori
  آموزش اعتبار سنجی در لاراول 5 alihossein 5 1,299 07-30-2017, 08:47 AM
آخرین ارسال: shima71
  آموزش فارسی لاراول ۵ alihossein 7 3,839 07-28-2017, 06:44 PM
آخرین ارسال: shima71
  انتقال سایت mvc به لاراول miladhassan 1 94 07-26-2017, 09:01 AM
آخرین ارسال: fery
Question راه اندازی لاراول روی سیستم افلاین؟ fery 0 63 07-26-2017, 08:55 AM
آخرین ارسال: fery
Sad مشکل در ایجاد وبلاگ در لاراول 5.4 itroz 0 100 07-05-2017, 05:03 PM
آخرین ارسال: itroz

پرش به انجمن:


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

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

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