Laravel - E-posta Gönderme

Laravel, zengin özelliklere sahip ücretsiz kitaplık kullanır SwiftMailere-posta göndermek için. Kütüphane işlevini kullanarak, çok fazla güçlük çekmeden kolayca e-posta gönderebiliriz. E-posta şablonları, görünümlerle aynı şekilde yüklenir; bu, Blade sözdizimini kullanabileceğiniz ve şablonlarınıza veri enjekte edebileceğiniz anlamına gelir.

Aşağıdaki tabloda, sözdizimi ve öznitelikleri gösterilmektedir. send işlev -

Sözdizimi void send (string | array $ view, array $ data, Closure | string $ callback)
Parametreler
  • $ görünüm (string | dizi) - e-posta mesajını içeren görünümün adı

  • $ veri (dizi) - görünüme iletilecek veri dizisi

  • $ geri arama - bir ileti örneği alan ve posta iletisinin alıcılarını, konusunu ve diğer yönlerini özelleştirmenize olanak tanıyan bir Kapanış geri araması

İadeler hiçbir şey değil
Açıklama E-posta gönderir.

Üçüncü argümanda, $ callback closure mesaj örneğini aldı ve bu örnekle aşağıdaki işlevleri de çağırabilir ve mesajı aşağıda gösterildiği gibi değiştirebiliriz.

Daha az yaygın yöntemlerden bazıları şunlardır:

Dosyaları eklemek veya gömmek için aşağıdaki yöntemleri kullanabilirsiniz -

  • $ ileti → attach ('yol / / eki.txt');
  • $ ileti → embed ('yol / / ek.jpg');

Posta, HTML veya metin olarak gönderilebilir. İlk bağımsız değişkende göndermek istediğiniz posta türünü aşağıda gösterildiği gibi bir dizi geçirerek belirtebilirsiniz. Varsayılan tür HTML'dir. Düz metin postası göndermek istiyorsanız, aşağıdaki sözdizimini kullanın.

Sözdizimi

Mail::send([‘text’=>’text.view’], $data, $callback);

Bu sözdiziminde, ilk argüman bir dizi alır. Kullanımtext anahtarın değeri olarak görünümün anahtar adı olarak.

Misal

Step 1 - Şimdi Gmail hesabından bir e-posta göndereceğiz ve bunun için Gmail hesabınızı Laravel ortam dosyasında yapılandırmanız gerekiyor - .envdosya. Gmail hesabınızda 2 adımlı doğrulamayı etkinleştirin ve uygulamaya özel bir şifre oluşturun ve ardından .env parametrelerini aşağıda gösterildiği gibi değiştirin.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Step 2 - değiştirdikten sonra .env önbelleği temizlemek ve Laravel sunucusunu yeniden başlatmak için aşağıdaki iki komutu yürütün.

php artisan config:cache

Step 3 - adlı bir denetleyici oluşturun MailController aşağıdaki komutu yürüterek.

php artisan make:controller MailController --plain

Step 4 - Başarılı bir yürütmeden sonra, aşağıdaki çıktıyı alacaksınız -

Step 5 - Aşağıdaki kodu kopyalayın

app/Http/Controllers/MailController.php dosya.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Step 6 - Aşağıdaki kodu kopyalayın resources/views/mail.blade.php dosya.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Step 7 - Aşağıdaki satırları ekleyin app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

Step 8 - Temel e-postayı test etmek için aşağıdaki URL'yi ziyaret edin.

http://localhost:8000/sendbasicemail

Step 9- Çıktı ekranı şuna benzer görünecektir. Temel e-posta çıktısını görmek için gelen kutunuzu kontrol edin.

Step 10 - HTML e-postasını test etmek için aşağıdaki URL'yi ziyaret edin.

http://localhost:8000/sendhtmlemail

Step 11- Çıktı ekranı şuna benzer görünecektir. Html e-posta çıktısını görmek için gelen kutunuzu kontrol edin.

Step 12 - HTML e-postasını ekli test etmek için aşağıdaki URL'yi ziyaret edin.

http://localhost:8000/sendattachmentemail

Step 13 - Aşağıdaki çıktıyı görebilirsiniz

Note - içinde MailController.phpGönderen yöntemindeki e-posta adresi, e-posta adresi gönderebileceğiniz e-posta adresi olmalıdır. Genellikle, sunucunuzda yapılandırılmış e-posta adresi olmalıdır.