فهرست:

آشنایی با کتابخانه SwiftMailer

لاراول از كتابخانه حرفه ای SwiftMailer برای ارسال ایمیل استفاده می كند. با استفاده از این کتابخانه، می توانیم به راحتی در لاراول ایمیل ارسال کنید. در لاراول شما می توانید قالب ایمیل مورد نظر خود را به روال قبل در قسمت View پیاده سازی کرده و از موتور Blade بهرمند گردید. در این کتابخانه Syntax متد Send و آرگومان های دریافتی آن بصورت زیر است.

  • آرگومان $view که می تواند از نوع string|array باشد برای تعیین view مورد نظر برای قالب ایمیل می باشد.
  • آرگومان $data که نوع آن باید بصورت array باشد برای ارسال متغییر ها به view مورد نظر است.
  • آرگومان $callback به شما این امکان را می دهد که دریافت کنندگان ایمیل، موضوع ایمیل و سایر موارد مربوط به پیغام ایمیل خود را سفارشی سازی کنید.

[pastacode lang=”markup” manual=”void%20send(string%7Carray%20%24view%2C%20array%20%24data%2C%20Closure%7Cstring%20%24callback)” message=”” highlight=”” provider=”manual”/] در آرگومان سوم $callback شما قادرید یک instance از $message را دریافت کرده و بصورت دلخواه آن را شخصی سازی نمایید بخ حالت های زیر دقت کنید. [pastacode lang=”php” manual=”%24message-%3Esubject(‘Welcome%20to%20the%20Tutorials%20Point’)%3B%0A%24message-%3Efrom(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%24message-%3Eto(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%0A%24message-%3Esender(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%24message-%3EreturnPath(’email%40example.com’)%3B%0A%24message-%3Ecc(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%24message-%3Ebcc(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%24message-%3EreplyTo(’email%40example.com’%2C%20’Mr.%20Example’)%3B%0A%24message-%3Epriority(2)%3B” message=”” highlight=”” provider=”manual”/] همچنین برای ضمیمه کردن فایل به همراه ایمیل می توانید حالت های زیر را بکار برید. [pastacode lang=”php” manual=”%24message-%3Eattach(‘path%2Fto%2Fattachment.txt’)%3B%0A%24message-%3Eembed(‘path%2Fto%2Fattachment.jpg’)%3B” message=”” highlight=”” provider=”manual”/] همچنین شما می توانید در اولین آرگومان تعیین کنید ایمیل مورد نظر شما به صورت HTML یا text ارسال شود، نوع پیش فرض ارسال بصورت HTML است. اگر می خواهید نامه بصورت متنی ساده ارسال شود بصورت زیر اقدام نمایید. [pastacode lang=”php” manual=”Mail%3A%3Asend(%5B’text’%3D%3E’text.view’%5D%2C%20%24data%2C%20%24callback)%3B” message=”” highlight=”” provider=”manual”/] در مثال بالا آرگومان اول بصورت array دریافت می شود و در آن حال ارسال ایمیل بصورت text تنظیم شده است.

مثال کاربردی برای ارسال ایمیل در لاراول

برای درک بهتر توضیحات بالا به ذکر یک مثال کاربردی می پردازیم برای این منظور ما قصد داریم از لاراول برای ارسال ایمیل از حساب کاربری Gmail استفاده نماییم، برای این منظور ابتدا تنظیمات زیر را در فایل .env انجام می دهیم. [pastacode lang=”markup” manual=”MAIL_DRIVER%20%3D%20smtp%0AMAIL_HOST%20%3D%20smtp.gmail.com%0AMAIL_PORT%20%3D%20587%0AMAIL_USERNAME%20%3D%20your-gmail-username%0AMAIL_PASSWORD%20%3D%20your-application-specific-password%0AMAIL_ENCRYPTION%20%3D%20tls” message=”.env” highlight=”” provider=”manual”/] پس از تغییر فایل .env دستور زیر را برای پاک کردن حافظه پنهان و راه اندازی مجدد سرور Laravel اجرا کنید. [pastacode lang=”markup” manual=”php%20artisan%20config%3Acache” message=”” highlight=”” provider=”manual”/] حال برای ایجاد کنترلر MailController از خط فرمان زیر استفاده کنید. [pastacode lang=”markup” manual=”php%20artisan%20make%3Acontroller%20MailController%20–plain%0A” message=”” highlight=”” provider=”manual”/] بعد از اجرای دستور بالا فایل MailController.php ایجاد می شود آن را بصورت زیر تغییر دهید. [pastacode lang=”php” manual=”%3C%3Fphp%0A%0Anamespace%20App%5CHttp%5CControllers%3B%0Ause%20Illuminate%5CHttp%5CRequest%3B%0Ause%20Mail%3B%0A%0Ause%20App%5CHttp%5CRequests%3B%0Ause%20App%5CHttp%5CControllers%5CController%3B%0A%0Aclass%20MailController%20extends%20Controller%20%7B%0A%20%20%20public%20function%20basic_email()%20%7B%0A%20%20%20%20%20%20%24data%20%3D%20array(‘name’%3D%3E%22Name%20Family%22)%3B%0A%20%20%20%0A%20%20%20%20%20%20Mail%3A%3Asend(%5B’text’%3D%3E’mail’%5D%2C%20%24data%2C%20function(%24message)%20%7B%0A%20%20%20%20%20%20%20%20%20%24message-%3Eto(‘abc%40gmail.com’%2C%20’Your%20Subject’)-%3Esubject%0A%20%20%20%20%20%20%20%20%20%20%20%20(‘Laravel%20Basic%20Testing%20Mail’)%3B%0A%20%20%20%20%20%20%20%20%20%24message-%3Efrom(‘xyz%40gmail.com’%2C’Sender%20name’)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20echo%20%22Basic%20Email%20Sent.%20Check%20your%20inbox.%22%3B%0A%20%20%20%7D%0A%20%20%20public%20function%20html_email()%20%7B%0A%20%20%20%20%20%20%24data%20%3D%20array(‘name’%3D%3E%22Name%20Family%22)%3B%0A%09%20%20%20%0A%20%20%20%20%20%20Mail%3A%3Asend(‘mail’%2C%20%24data%2C%20function(%24message)%20%7B%0A%20%20%20%20%20%20%20%20%20%24message-%3Eto(‘abc%40gmail.com’%2C%20’Your%20Subject’)-%3Esubject%0A%20%20%20%20%20%20%20%20%20%20%20%20(‘Laravel%20HTML%20Testing%20Mail’)%3B%0A%20%20%20%20%20%20%20%20%20%24message-%3Efrom(‘xyz%40gmail.com’%2C’Sender%20name’)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20echo%20%22HTML%20Email%20Sent.%20Check%20your%20inbox.%22%3B%0A%20%20%20%7D%0A%20%20%20public%20function%20attachment_email()%20%7B%0A%20%20%20%20%20%20%24data%20%3D%20array(‘name’%3D%3E%22Name%20Family%22)%3B%0A%09%20%20%20%0A%20%20%20%20%20%20Mail%3A%3Asend(‘mail’%2C%20%24data%2C%20function(%24message)%20%7B%0A%20%20%20%20%20%20%20%20%20%24message-%3Eto(‘abc%40gmail.com’%2C%20’Your%20Subject’)-%3Esubject%0A%20%20%20%20%20%20%20%20%20%20%20%20(‘Laravel%20Testing%20Mail%20with%20Attachment’)%3B%0A%20%20%20%20%20%20%20%20%20%24message-%3Eattach(‘C%3A%5Claravel-master%5Claravel%5Cpublic%5Cuploads%5Cimage.png’)%3B%0A%20%20%20%20%20%20%20%20%20%24message-%3Eattach(‘C%3A%5Claravel-master%5Claravel%5Cpublic%5Cuploads%5Ctest.txt’)%3B%0A%20%20%20%20%20%20%20%20%20%24message-%3Efrom(‘xyz%40gmail.com’%2C’Sender%20name’)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20echo%20%22Email%20Sent%20with%20attachment.%20Check%20your%20inbox.%22%3B%0A%20%20%20%7D%0A%7D” message=”app/Http/Controllers/MailController.php” highlight=”” provider=”manual”/] حال یک قالب ساده برای ایمیل مورد نظر خود در فایل mail.blade.php بصورت زیر بسازید. [pastacode lang=”markup” manual=”%3Ch1%3EHi%2C%20%7B%7B%20%24name%20%7D%7D%3C%2Fh1%3E%0Al%3Cp%3ESending%20Mail%20from%20Laravel.%3C%2Fp%3E” message=”resources/views/mail.blade.php” highlight=”” provider=”manual”/] سپس فایل روت را بصورت زیر ویرایش نمایید. [pastacode lang=”php” manual=”Route%3A%3Aget(‘sendbasicemail’%2C’MailController%40basic_email’)%3B%0ARoute%3A%3Aget(‘sendhtmlemail’%2C’MailController%40html_email’)%3B%0ARoute%3A%3Aget(‘sendattachmentemail’%2C’MailController%40attachment_email’)%3B” message=”app/Http/routes.php” highlight=”” provider=”manual”/] حال برای ارسال یک ایمیل ساده از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد. [pastacode lang=”markup” manual=”Basic%20Email%20Sent.%20Check%20your%20inbox.” message=”http://localhost:8000/sendbasicemail” highlight=”” provider=”manual”/] برای ارسال یک ایمیل با فرمت HTML از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد. [pastacode lang=”markup” manual=”HTML%20Email%20Sent.%20Check%20your%20inbox.” message=”http://localhost:8000/sendhtmlemail” highlight=”” provider=”manual”/] و برای ارسال یک ایمیل همراه با فایل ضمیمه از آدرس زیر استفاده می کنیم و خروجی مرورگر ما باید بصورت زیر باشد. [pastacode lang=”markup” manual=”Email%20Sent%20with%20attachment.%20Check%20your%20inbox.” message=”http://localhost:8000/sendattachmentemail” highlight=”” provider=”manual”/]