Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan perisian tengah untuk menghantar e-mel dalam Laravel

Cara menggunakan perisian tengah untuk menghantar e-mel dalam Laravel

PHPz
PHPzasal
2023-11-03 15:15:281090semak imbas

Cara menggunakan perisian tengah untuk menghantar e-mel dalam Laravel

Cara menggunakan middleware untuk penghantaran e-mel dalam Laravel

Pengenalan:
Laravel ialah rangka kerja PHP popular yang menyediakan banyak ciri yang fleksibel dan mudah digunakan. Antaranya, penghantaran e-mel adalah salah satu fungsi penting bagi banyak aplikasi web. Dalam artikel ini, kami akan menerangkan cara menggunakan perisian tengah dalam Laravel untuk menghantar e-mel dan memberikan contoh kod konkrit.

1. Konfigurasikan e-mel
Sebelum kita mula, kita perlu mengkonfigurasi e-mel dalam Laravel. Dalam fail config/mail.php, kami boleh menetapkan pemacu e-mel, hos, port, penyulitan, dsb. Tetapan ini akan digunakan untuk menyambung ke pelayan mel dan menghantar e-mel. Berikut ialah contoh fail konfigurasi: config/mail.php文件中,我们可以设置邮件的驱动程序、主机、端口、加密等。这些设置将用于连接到邮件服务器并发送电子邮件。以下是一个示例配置文件:

return [
    'default' => env('MAIL_MAILER', 'smtp'),
    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
        ],
    ],
];

二、创建邮件中间件
接下来,我们需要创建一个邮件中间件,该中间件将负责发送电子邮件。可以使用Laravel的Artisan命令行工具来创建中间件:

php artisan make:middleware SendMailMiddleware

此命令将在app/Http/Middleware目录下创建一个名为SendMailMiddleware.php的文件。在该文件中,我们可以定义一个handle方法来处理邮件发送的逻辑。以下是一个示例中间件的代码:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesMail;

class SendMailMiddleware
{
    public function handle($request, Closure $next)
    {
        // 根据需要自定义邮件发送的逻辑
        $email = $request->input('email');
        $subject = $request->input('subject');
        $message = $request->input('message');

        Mail::raw($message, function ($mail) use ($email, $subject) {
            $mail->to($email)->subject($subject);
        });
        
        return $next($request);
    }
}

在上述代码中,我们通过Mail类来处理邮件的发送。raw方法用于发送简单的文本邮件,可以按需使用其他方法,如send用于发送包含模板的邮件。

三、注册邮件中间件
接下来,我们需要将邮件中间件注册到路由中。可以在app/Http/Kernel.php文件的$middlewareGroups属性中添加邮箱中间件。以下是一个示例的修改代码:

protected $middlewareGroups = [
    'web' => [
        // 其他中间件
        AppHttpMiddlewareSendMailMiddleware::class,
    ],

    'api' => [
        // 其他中间件
        AppHttpMiddlewareSendMailMiddleware::class,
    ],
];

上述代码将邮件中间件添加到webapi中间件组中。这样,当请求经过这些组时,都会执行邮件中间件。

四、使用邮件中间件
现在我们可以在路由或控制器中使用邮件中间件来发送邮件。以下是一个示例的路由定义:

Route::post('/send-email', function (Request $request) {
    // 发送邮件之前的其他逻辑
})->middleware('send.mail');

在上述代码中,我们给Route函数传递了一个匿名函数,并通过middleware方法指定了要使用的邮件中间件。在这里,我们使用的是send.mail中间件,即刚刚创建的SendMailMiddleware

五、测试邮件发送
最后,我们可以使用Postman或类似工具向/send-email进行POST请求,同时传递emailsubjectmessagerrreee

2. Buat middleware e-mel

Seterusnya, kita perlu mencipta middleware e-mel yang akan bertanggungjawab untuk menghantar e-mel. Middleware boleh dibuat menggunakan alat baris arahan Artisan Laravel:
rrreee

Arahan ini akan mencipta fail bernama SendMailMiddleware.php dalam direktori app/Http/Middleware . Dalam fail ini, kami boleh mentakrifkan kaedah handle untuk mengendalikan logik penghantaran e-mel. Berikut ialah kod contoh middleware:

rrreee

Dalam kod di atas, kami menggunakan kelas Mel untuk mengendalikan penghantaran e-mel. Kaedah raw digunakan untuk menghantar e-mel teks ringkas Anda boleh menggunakan kaedah lain seperti yang diperlukan, seperti hantar untuk menghantar e-mel yang mengandungi templat.
  • 3. Daftar middleware e-mel
  • Seterusnya, kita perlu mendaftar middleware e-mel ke dalam laluan. Anda boleh menambah perisian tengah e-mel dalam atribut $middlewareGroups bagi fail app/Http/Kernel.php. Berikut ialah contoh kod yang diubah suai:
rrreee🎜Kod di atas menambah perisian tengah e-mel pada kumpulan perisian tengah web dan api. Dengan cara ini, apabila permintaan melalui kumpulan ini, perisian tengah mel akan dilaksanakan. 🎜🎜4. Gunakan middleware e-mel🎜Kini kita boleh menggunakan middleware e-mel dalam penghalaan atau pengawal untuk menghantar e-mel. Berikut ialah contoh definisi laluan: 🎜rrreee🎜Dalam kod di atas, kami menghantar fungsi tanpa nama kepada fungsi Route dan menentukan e-mel untuk digunakan melalui middleware kaedah middleware. Di sini, kami menggunakan perisian tengah send.mail, iaitu SendMailMiddleware yang baru kami buat. 🎜🎜5 Uji penghantaran e-mel🎜Akhir sekali, kami boleh menggunakan Posmen atau alat yang serupa untuk membuat permintaan POST ke /send-email dan lulus email dan subject<.> pada masa yang sama kod> dan parameter <code>mesej. Perisian tengah akan menghantar e-mel apabila permintaan tiba dan meneruskan pemprosesan logik berikutnya. 🎜🎜Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan perisian tengah untuk menghantar e-mel dalam Laravel. Dengan mengkonfigurasi e-mel, mencipta perisian tengah e-mel, mendaftarkan perisian tengah dan menggunakan perisian tengah dalam laluan atau pengawal, kami boleh melaksanakan fungsi penghantaran e-mel dengan mudah. Harap artikel ini dapat membantu anda. 🎜🎜Dokumentasi rujukan: 🎜🎜🎜Dokumentasi e-mel Laravel: https://laravel.com/docs/8.x/mail🎜🎜

Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk menghantar e-mel dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn