طراحی سایت با لاراول – ارسال ایمیل

طراحی سایت با لاراول – ارسال ایمیل

خیلی خوب! به بخش ششم از سری آموزش Laravel خوش آمدید، امیدوارم تا اینجا از این مجموعه لذت برده باشید. 🙂 در قسمت قبل دیدیم که چطور یک فرم تماس خوشکل به وب سایت خود اضافه کنیم. کاربر با وارد شدن به صفحه Contact می تواند با ما از طریق ایمیل در تماس باشد، اما هنوز ویژگی ارسال ایمیل را برای آن درست نکرده ایم، ما در بخش قبل فقط ورودی را از کاربر می گرفتیم و آن را اعتبار سنجی می کردیم تا از معتبر بودن ایمیل وارد شده و خالی نبودن فیلد های ضروری اطمینان حاصل کنیم.

 

ارسال ایمیل با استفاده از متد Mail لاراول

 

ارسال ایمیل با لاراول بسیار راحت است. شما می توانید از روش سنتی که قبلا در PHP استفاده می کردید برای ارسال ایمیل استفاده کنید، با این حال این کار دشوار و به تجربه نیازمند است. خوشبختانه لاراول یک روش آسانتر برای ارسال ایمیل فراهم کرده است. پس اجازه دهید از این روش استفاده کنیم!

 

ارسال ایمیل با Gmail

 

در این آموزش فرض شده است که شما یک حساب جیمیل دارید و می خواهید از آن برای ارسال ایمیل استفاده کنید. تنظیمات برای این کار بسیار آسان است. در ریشه پروژه فایلی با نام .env وجود دارد، آن را باز کنید و متغیرهای لازم را ویرایش کنید:

 

 

ایمیل و رمز عبور خود را با دقت در متغیر وارد کنید. بعد از آن به فایل config/mail.php مراجعه کنید تا نکته ای را با هم مرور کنیم. وقتی این فایل را با ویرایشگر خود باز کنیم با آرایه ای از تنظیمات روبرو می شویم، به عنوان مثال دستور زیر را در این فایل در نظر بگیرید:

 

 

دستور فوق نشان می دهد که اگر متغیر MAIL_DRIVER در فایل .env دارای مقداری باشد به عنوان پارامتر استفاده می کند، در کنار، پارامتر smpt را داریم، واضح است که وقتی متغیر MAIL_DRIVER را در .env مشخص نکرده باشیم از پارامتر دوم استفاده می کند. برخی از دستورات بعدی نیز از همین قانون استفاده می کنند پس لازم نیست آنها را نیز مورد بررسی قرار دهیم!

 

همانطور که قبلا گفتیم، ما می خواهیم از gmail، ایمیل ارسال کنیم، پس باید از سرور smtp.gmail.com و از پورت 587 یا 465 استفاده کنیم. در ادامه تنطیم زیر را داریم:

 

 

همانطور که مشخص است، در بالا ایمیل gmail را وارد کنید که می خواهید ایمیل ها به آن ارسال شوند.

 

 

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

 

 

در آخر نیز دستور فوق را داریم که اگر با مقدار true مقدار دهی شده باشد (به شرطی که متغیر MAIL_DRIVER با مقدار log تنظیم شده باشد) ایمیل ها را در واقع به جایی ارسال نمی کند و بجاش در پوشه storage به عنوان یک فایل log ذخیره می کند. ما در این آموزش می خواهیم یک ایمیل واقعی از پروژه خود ارسال کنیم پس مطمئن شوید این کلید pretend مقدار false را داشته باشد.

 

متد Mail

 

ابتدا فایل جدید resources/views/emails/contactemail.blade.php را ایجاد کنید و محتوای زیر را به آن اضافه کنید:

 

 

این فایل باعث می شود وقتی که کاربر فرم را پر کرد اطلاعات در قالب html به ما ارسال شود.

 

بعد از این کار به کنترلر خود یعنی ContactController.php مراجعه کنید و متد Mail را بصورت زیر به آن اضافه کنید:

 

 

در کد فوق بلاک else مشخص است که اگر کاربر تمام اطلاعات خواسته شده از فرم را درست پر کرده باشد متد Mail اجرا می شود. در اینجا فرم contactemail.blade.php را که قبلا درست کرده ایم همراه با ورودی های کاربر ($input) به ما ارسال می شود.

 

 

توجه داشته باشید ایمیلی را که می خواهیم ایمیل ها به آن ارسال شوند را در to() وارد کنید و subject دلخواه خود را وارد کنید.

 

 

دستور فوق وقتی ایمیل با موفقیت ارسال شود، به کاربر پیام فوق را نشان می دهد.

 

تنظیم وب سرور XAMPP

 

از آنجایی که ما در حال تست کردن پروژه خود هستیم، من فرض کرده ام که شما از وب سرورهایی مثل xampp استفاده می کنید. بطور عادی اگر بخواهید برنامه را تست کنید و ایمیلی را از صفحه تماس خود ارسال کنید، به احتمال زیاد ایمیلی بطور واقعی به جیمیل ما ارسال نخواهد شد، به این دلیل که از هاست واقعی برای ارسال ایمیل استفاده نمی کنیم! و بصورت localhost برنامه خود را آزمایش می کنیم. برای اینکه ارسال ایمیل از وب سرور مجازی خود را شبیه سازی کنیم مراحلی است که باید آن را انجام دهیم، تنها کافی اس فایل های php.ini و sendmail.ini را به درستی ویرایش کنیم.

 

ابتدا باید sendmail_path از فایل php.ini را پیدا و تنظیم کنید تا به فایل درست برای اجرا فایل sendmail بپردازد.

 

به عنوان مثال این خط را در php.ini پیدا کرده:

 

 

آن را از حالا غیر فعال بود به حالت فعال بود تغییر دهید. برای این کار ; را حذف کنید.

 

حال با کمی اسکرل کردن در فایل php.ini به خط زیر بر می خورید، که خیلی هم شبیه به دستور فوق است:

 

 

حال دستور فوق را غیر فعال کنید، کاراکتر ; را به ابتدای خط اضافه کنید.

 

بعد از اینکه فایل php.ini را تنظیم کردید، آن را ذخیره کنید و حال فایل sendmail.ini را در xampp خود پیدا کرده و متغیرهای زیر را پیدا کرده و بصورت زیر ویرایش کنید:

 

 

توجه داشته باشید اگر پورت 587 کار نکرد با پورت 465 جایگزین کنید.

 

بعد از انجام مراحل فوق فایل ها را ذخیره کنید و وب سرور xampp را ریستارت کنید. اگر ریستارت نکنید مراحل فوق اعمال نمی شوند.


 

خیلی خوب حالا زمان آن است که فرم تماس خود را آزمایش کنیم تا ببینیم ایمیل ارسال می شود یا نه!

 

همانطور که می دانید به آدرس http://localhost:8000/contact رفته و اطلاعات را وارد کنید. اگر همه چیز به درستی پیش رفته باشد باید پیغام زیر را مشاهده کنید:

 

طراحی سایت با لاراول ارسال ایمیل

 

همانطور که در زیر مشاهده می کنید ایمیل ما با موفقیت ارسال شده است:
طراحی سایت با لاراول ارسال ایمیل

 

اگر می خواهید یک توسعه دهنده حرفه ای شوید پیشنهاد می کنم لاراول را از طریق homestead نصب کنید. آموزش نصب را می توانید از لینک زیر دنبال کنید:

 

 

خوب در این قسمت مراحل اضافه کردن ارسال ایمیل از طریق متد لاراول را یاد گرفتیم، امیدوارم با مشکلی بر نخورده باشید. مراحل فوق در اکثر اوقات کار می کند و هیچ مشکلی پیش نمی آید. اگر همچنان ایمیلی را به شما ارسال نمی شود، می توانید به لطف گوگل برنامه خود را اشکال زدایی کنید. 😉


 

  • علی اصغر کریمی

    آقا واقعا یه دونه ای ممنونم ازت شدید

  • سلام داداش شما داری بزور به ما لاراول یاد میدی! اگر امکانش هست تا قبل از اینکه لاراول رو یاد بگیرم این آموزش های نود جی اس رو حالا هفته ای یک قسمت هم شده جلو ببر بهتره که سری آموزش ها رو به یه جایی برسونید تا اینکه وسط هر کدوم پرانتز باز کنید و بینش یه سری آموزش دیگه شروع کنید!
    ممنون

    • پاتریک

      هاها بزور؟؟؟!!! D:
      باشه چشم node هم پست می زارم، جالب اینجاست که بچه های لاراول هم درخواست بیشتر لاراول می کنند. راستی سایت شما هم عالیه، موفق باشید. 😉

      • داداش بیشتر جنبه طنز داشت کمانتم ولی خیلی ممنون از اینکه به نظرات اهمیت میدی
        tnx

        • پاتریک

          خواهش می کنم. 😉