رتبه موضوع:
  • 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
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  درخواست راهنمایی : تعریف سطوح دسترسی کاربری در لاراول Bvk.Programmer 11 805 02-16-2017, 10:09 PM
آخرین ارسال: ansar
  # سوال : آموزش ساخت ربات تلگرام با پکیج irazasyed/telegram-bot-sdk Bvk.Programmer 1 324 02-16-2017, 09:55 PM
آخرین ارسال: ansar
  بهترین پکیج acl برای لاراول چیست homeily@gmail.com 2 76 12-18-2016, 08:43 AM
آخرین ارسال: hamo
  تغییر نکردن محتوای صفحه پس از ارسال id mahsandr 0 95 11-24-2016, 03:31 PM
آخرین ارسال: mahsandr
  آموزش اعتبار سنجی در لاراول 5 alihossein 4 890 11-20-2016, 07:12 AM
آخرین ارسال: حمید رﺽا کمالی
  نحوه ایجاد Token-Based Authentication(oauth2) در لاراول با استفاده از passport anonymox 0 98 11-12-2016, 06:27 AM
آخرین ارسال: anonymox
  آموزش روتینگ routing در لاراول 5 alihossein 2 1,314 11-12-2016, 04:37 AM
آخرین ارسال: حمید رﺽا کمالی
  اجرای کوئری در لاراول amirbakhtiari 1 68 11-06-2016, 07:50 AM
آخرین ارسال: hamo
  مشکل در ارسال داده به پایگاه داده 111r11v11n 2 95 10-31-2016, 05:23 AM
آخرین ارسال: LavarelUser
  آموزش کار با دیتابیس در لاراول 5 alihossein 6 1,899 10-27-2016, 01:01 PM
آخرین ارسال: sempaisaleh

پرش به انجمن:


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

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

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