Laravel 受信メール


ヘルケスメルハバ! Bu yazı da laravel içerisinde gelen emailleriniz nasıl handle edebileceğiniz inceleyeceğiz. laravel-mailbox パケティーニ kullanacağız.

ない: laravel-mailbox paketini kullanmadan önce bilmelisiniz ki paketin desteklediği servisler mailgun, postmark ve sendgrid servisleridir.

laravel-mailbox paketini laravel projenize eklemek için aşağıdaki komutu kullanabilirsiniz.

composer required beyondcode/laravel-mailbox


laravel-mailbox のパケチニン kullanımı ve konfigürsayon​​ işlemleri için publish işlemi yapılması gerekiyor.

php artisan vendor:publish --provider="BeyondCode\Mailbox\MailboxServiceProvider" --tag="migrations"



php artisan vendor:publish --provider="BeyondCode\Mailbox\MailboxServiceProvider" --tag="config"


Ardından paket için gerekli tablonun oluşturulması için migration dosyasın çalıştırmanız gerekmektedir.

php artisan migrate


Paketin kurulumu bittikten sonra temel kullanımı inceleyelim.
パケットは AppServiceProvider で使用されており、電子メールのアドレスは、ハンドルを使用している必要があります.
エルネク:

use BeyondCode\Mailbox\InboundEmail;
use BeyondCode\Mailbox\Facades\Mailbox;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return  void
     */
    public function boot()
    {
        // when send email someone to [email protected], InboundEmailHandler class will working
        // InboundEmailHandler is a Invokable Class
        Mailbox::to('[email protected]', InboundEmailHandler::class);

            // You can use like this.
        Mailbox::to('[email protected]' function (InboundEmail $email) {
                // InboundEmail some available methods
                $id = $email->id();
                $date = $email->date();
                $html = $email->html();
                $text = $email->text();
                $subject = $email->subject();
                $from = $email->from();
                // Handle incoming email
        });
    }
}


laravel-mailbox paketini gerçek bir kullanımda inceleyelim.
他のユーザーは、新しい電子メールを送信してください.
Bunun için kullanıcıların her biri için ayrı email adresi olması gerekmektedir. Kullanıcılar için bunun isim - soyisim - rastgele bir değer (ahmet-korkmaz-adas76fa87dfa) olarak düşünelim. Bunun için users tablonuza Yeni bir sütun oluşturmanız gerekmektedir. Bu durumun hazır olduğunu düşünerek メールボックス ile ilgili kodlarımızı yazmaya başlayalım.

// AppServiceProvider.php

use BeyondCode\Mailbox\Facades\Mailbox;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return  void
     */
    public function boot()
    {
        // You can use userEmail as a variable in CreateTaskHandler invoke method.
        Mailbox::from('{userEmail}@domain.com', CreateTaskHandler::class);
    }
}



// app/InboundEmails/CreateTaskHandler.php

namespace App\InboundEmails;

use BeyondCode\Mailbox\InboundEmail;

class CreateTaskHandler {
        public function __invoke(InboundEmail $email, $userEmail)
        {
            $user = User::where('inbound_email', $userEmail)->first();

            if ($user) {
                $task = $user->tasks()->create([
                    'title' => $email->subject(),
                    'description' => $email->text(),
                ]);

                // $email->cc() return array and you can attach cc users to task users
                $task->users()->attach($email->cc());
            }
        }
}



Sonuç olarak, laravel-mailbox paketini kullanarak gelen emailleri handle etmek çok kolay. Buna ek olarak task oluşturduktan sor kullanıcıya success maili reply edebilirsiniz.