فهرست:
آشنایی با کتابخانه 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”/]