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)),
]);
}
}