PHP code example of iperamuna / mailu-laravel

1. Go to this page and download the library: Download iperamuna/mailu-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

iperamuna / mailu-laravel example snippets


use Iperamuna\Mailu\Facades\Mailu;

// List all users
$users = Mailu::listUsers(); // Returns Collection<UserData>

// Create a new domain
Mailu::createDomain([
    'name' => 'example.com',
    'comment' => 'Managed by Laravel',
]);

// Generate DKIM keys
Mailu::generateDKIM('example.com');

namespace App\Http\Controllers;

use Iperamuna\Mailu\MailuService;
use Illuminate\Http\Request;

class MailboxController extends Controller
{
    public function index(MailuService $mailu)
    {
        return view('mailboxes.index', [
            'users' => $mailu->listUsers(),
        ]);
    }

    public function store(Request $request, MailuService $mailu)
    {
        $mailu->createUser($request->only(['email', 'raw_password', 'displayed_name']));
        
        return back()->with('success', 'Mailbox created!');
    }
}

namespace App\Filament\Resources;

use Filament\Resources\Resource;
use Filament\Tables\Table;
use Filament\Tables\Columns\TextColumn;
use Iperamuna\Mailu\Facades\Mailu;
use Iperamuna\Mailu\Data\UserData;

class MailboxResource extends Resource
{
    public static function table(Table $table): Table
    {
        return $table
            ->content(fn () => Mailu::listUsers()) // Fetch from API
            ->columns([
                TextColumn::make('email')
                    ->searchable()
                    ->sortable(),
                TextColumn::make('displayed_name')
                    ->label('Name'),
                TextColumn::make('quota_bytes_used')
                    ->label('Usage')
                    ->formatStateUsing(fn ($state) => number_format($state / 1024 / 1024, 2) . ' MB'),
            ])
            ->actions([
                \Filament\Tables\Actions\DeleteAction::make()
                    ->action(fn (UserData $record) => Mailu::deleteUser($record->email)),
            ]);
    }
}
bash
php artisan vendor:publish --tag="mailu-config"