From 887f6316f6c279f55828294112a6c2105a92a4f3 Mon Sep 17 00:00:00 2001 From: Gitea Date: Tue, 13 May 2025 17:37:05 +0530 Subject: [PATCH] added outlook mail support --- app/Filament/Pages/Settings.php | 22 +++++++++++ app/Livewire/Dashboard/Mailbox/Inbox.php | 12 ++++++ app/Livewire/Frontend/Action.php | 8 ++++ app/Models/Premium.php | 39 ++++++++++++++++++- app/Models/ZEmail.php | 38 +++++++++++++++++- resources/css/boil.css | 24 ++++++++++++ .../views/components/layouts/app.blade.php | 2 +- .../dashboard/mailbox/inbox.blade.php | 11 ++++-- .../views/livewire/frontend/action.blade.php | 7 +++- 9 files changed, 155 insertions(+), 8 deletions(-) diff --git a/app/Filament/Pages/Settings.php b/app/Filament/Pages/Settings.php index 8670cfa..1521e53 100644 --- a/app/Filament/Pages/Settings.php +++ b/app/Filament/Pages/Settings.php @@ -61,6 +61,8 @@ class Settings extends Page implements HasForms 'gmailUsernames' => 'gmailUsername', 'premium_domains' => 'premium_domain', 'premium_gmailUsernames' => 'premium_gmailUsername', + 'outlookUsernames' => 'outlookUsername', + 'premium_outlookUsernames' => 'premium_outlookUsername', 'forbidden_ids' => 'forbidden_id', 'blocked_domains' => 'blocked_domain', ]; @@ -272,6 +274,24 @@ class Settings extends Page implements HasForms ]), ]), + Section::make('Public & Premium Outlook.com Usernames') + ->collapsed() + ->columns(2) + ->schema([ + Repeater::make('configuration_settings.outlookUsernames') + ->statePath('configuration_settings.outlookUsernames') + ->columnSpan(1) + ->schema([ + TextInput::make('outlookUsername')->label('Public Outlook Username')->required()->maxLength(30), + ]), + Repeater::make('configuration_settings.premium_outlookUsernames') + ->statePath('configuration_settings.premium_outlookUsernames') + ->columnSpan(1) + ->schema([ + TextInput::make('premium_outlookUsername')->label('Premium Outlook Username')->required()->maxLength(30), + ]), + ]), + Section::make('Mailbox Configuration') ->collapsed() ->schema([ @@ -394,6 +414,8 @@ class Settings extends Page implements HasForms 'premium_domains' => 'premium_domain', 'premium_gmailUsernames' => 'premium_gmailUsername', 'gmailUsernames' => 'gmailUsername', + 'outlookUsernames' => 'outlookUsername', + 'premium_outlookUsernames' => 'premium_outlookUsername', 'forbidden_ids' => 'forbidden_id', 'blocked_domains' => 'blocked_domain' ]; diff --git a/app/Livewire/Dashboard/Mailbox/Inbox.php b/app/Livewire/Dashboard/Mailbox/Inbox.php index d9114ec..839df59 100644 --- a/app/Livewire/Dashboard/Mailbox/Inbox.php +++ b/app/Livewire/Dashboard/Mailbox/Inbox.php @@ -201,6 +201,18 @@ class Inbox extends Component return redirect()->route('dashboard.premium'); } + public function outlook() { + if (!$this->checkEmailLimit()) { + return $this->showAlert('error', __('You have reached daily limit of maximum ') . $this->email_limit . __(' temp mail addresses.')); + } + if ($this->premium) { + $this->email = Premium::generateRandomOutlook(); + } else { + $this->email = ZEmail::generateRandomOutlook(); + } + return redirect()->route('dashboard.premium'); + } + public function deleteEmail() { return redirect()->route('deleteP', ['email' => $this->email]); diff --git a/app/Livewire/Frontend/Action.php b/app/Livewire/Frontend/Action.php index 2aad317..fccd712 100644 --- a/app/Livewire/Frontend/Action.php +++ b/app/Livewire/Frontend/Action.php @@ -59,6 +59,14 @@ class Action extends Component return redirect()->route('mailbox'); } + public function outlook() { + if (!$this->checkEmailLimit()) { + return $this->showAlert('error', __('You have reached daily limit of maximum ') . json_decode(config('app.settings.configuration_settings'))->email_limit . __(' temp mail addresses.')); + } + $this->email = ZEmail::generateRandomOutlook(); + return redirect()->route('mailbox'); + } + public function deleteEmail() { return redirect()->route('delete', ['email' => $this->email]); diff --git a/app/Models/Premium.php b/app/Models/Premium.php index f8d873c..5ade493 100644 --- a/app/Models/Premium.php +++ b/app/Models/Premium.php @@ -240,6 +240,7 @@ class Premium extends Model $settings = json_decode(config('app.settings.configuration_settings'), true); $forbidden_ids = $settings['forbidden_ids'] ?? []; $gmail_usernames = $settings['premium_gmailUsernames'] ?? []; + $outlook_usernames = $settings['premium_outlookUsernames'] ?? []; $domains = $settings['premium_domains'] ?? []; if (in_array($username, $forbidden_ids)) { @@ -250,13 +251,31 @@ class Premium extends Model return self::generateRandomGmail(true); } + if ($username === '' && in_array($domain, ['outlook.com'])) { + return self::generateRandomOutlook(true); + } + $zemail = new Premium(); if ($username === '' && in_array($domain, $domains)) { return $zemail->generateRandomUsername().'@'.$domain; } + if (in_array($domain, ['outlook.com'])) { + if (str_contains($username, '+')) { + [$check_username, $post_username] = explode('+', $username, 2); + if (in_array($check_username, $outlook_usernames)) { + $email = $username . '@' . $domain; + } else { + $email = $zemail->getRandomOutlookUser() . '+' . $post_username . '@' . $domain; + } + } else { + $email = $zemail->getRandomOutlookUser() . '+' . $username . '@' . $domain; + } + self::storeEmail($email); + return $email; + } if (in_array($domain, ['gmail.com', 'googlemail.com'])) { if (str_contains($username, '+')) { @@ -314,7 +333,10 @@ class Premium extends Model } else { $email = $zemail->getRandomGmailUser().'+'.$zemail->generateRandomUsername().'@googlemail.com'; } - } else { + } elseif ($domain == "outlook.com") { + $email = $zemail->getRandomOutlookUser().'+'.$zemail->generateRandomUsername().'@outlook.com'; + } + else { $email = $zemail->generateRandomUsername() . '@' . $domain; } if ($store) { @@ -358,6 +380,16 @@ class Premium extends Model } return $email; } + + public static function generateRandomOutlook($store = true): string + { + $zemail = new Premium(); + $email = $zemail->getRandomOutlookUser().'+'.$zemail->generateRandomUsername().'@outlook.com'; + if ($store) { + self::storeEmail($email); + } + return $email; + } private static function storeEmail($email): void { Log::create([ @@ -410,6 +442,11 @@ class Premium extends Model $count = count($gmailusername); return $count > 0 ? $gmailusername[rand(1, $count) - 1] : ''; } + private function getRandomOutlookUser() { + $outlook_username = json_decode(config('app.settings.configuration_settings'))->premium_outlookUsernames ?? []; + $count = count($outlook_username); + return $count > 0 ? $outlook_username[rand(1, $count) - 1] : ''; + } private function generatePronounceableWord(): string { $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones diff --git a/app/Models/ZEmail.php b/app/Models/ZEmail.php index 184ef5b..f35e168 100644 --- a/app/Models/ZEmail.php +++ b/app/Models/ZEmail.php @@ -114,6 +114,7 @@ class ZEmail extends Model $settings = json_decode(config('app.settings.configuration_settings'), true); $forbidden_ids = $settings['forbidden_ids'] ?? []; $gmail_usernames = $settings['gmailUsernames'] ?? []; + $outlook_usernames = $settings['outlookUsernames'] ?? []; $domains = $settings['domains'] ?? []; if (in_array($username, $forbidden_ids)) { @@ -124,13 +125,31 @@ class ZEmail extends Model return ZEmail::generateRandomGmail(true); } + if ($username === '' && in_array($domain, ['outlook.com'])) { + return ZEmail::generateRandomOutlook(true); + } + $zemail = new ZEmail(); if ($username === '' && in_array($domain, $domains)) { return $zemail->generateRandomUsername().'@'.$domain; } + if (in_array($domain, ['outlook.com'])) { + if (str_contains($username, '+')) { + [$check_username, $post_username] = explode('+', $username, 2); + if (in_array($check_username, $outlook_usernames)) { + $email = $username . '@' . $domain; + } else { + $email = $zemail->getRandomOutlookUser() . '+' . $post_username . '@' . $domain; + } + } else { + $email = $zemail->getRandomOutlookUser() . '+' . $username . '@' . $domain; + } + ZEmail::storeEmail($email); + return $email; + } if (in_array($domain, ['gmail.com', 'googlemail.com'])) { if (str_contains($username, '+')) { @@ -190,7 +209,10 @@ class ZEmail extends Model } else { $email = $zemail->getRandomGmailUser().'+'.$zemail->generateRandomUsername().'@googlemail.com'; } - } else { + } elseif ($domain == "outlook.com") { + $email = $zemail->getRandomOutlookUser().'+'.$zemail->generateRandomUsername().'@outlook.com'; + } + else { $email = $zemail->generateRandomUsername() . '@' . $domain; } if ($store) { @@ -235,6 +257,15 @@ class ZEmail extends Model return $email; } + public static function generateRandomOutlook($store = true): string + { + $zemail = new ZEmail(); + $email = $zemail->getRandomOutlookUser().'+'.$zemail->generateRandomUsername().'@outlook.com'; + if ($store) { + ZEmail::storeEmail($email); + } + return $email; + } private static function storeEmail($email): void { Log::create([ @@ -292,6 +323,11 @@ class ZEmail extends Model $count = count($gmailusername); return $count > 0 ? $gmailusername[rand(1, $count) - 1] : ''; } + private function getRandomOutlookUser() { + $outlook_username = json_decode(config('app.settings.configuration_settings'))->outlookUsernames ?? []; + $count = count($outlook_username); + return $count > 0 ? $outlook_username[rand(1, $count) - 1] : ''; + } private function generatePronounceableWord(): string { diff --git a/resources/css/boil.css b/resources/css/boil.css index 7de6558..4f1167e 100644 --- a/resources/css/boil.css +++ b/resources/css/boil.css @@ -36,6 +36,30 @@ background-color: #00AB55; } +.btn-outlook { + background-color: #0078D4; /* Outlook blue */ + color: white; + border: 2px solid #0078D4; + transition: background-color 0.3s ease; +} + +.btn-outlook:hover { + background-color: #005a9e; /* Darker blue on hover */ + border-color: #005a9e; +} + +.btn-gmail { + color: white; + background-color: #D93025; /* Gmail red */ + border: 2px solid #D93025; + transition: background-color 0.3s ease; +} + +.btn-gmail:hover { + background-color: #A52714; /* Darker red on hover */ + border-color: #A52714; +} + .iframe-min-height { min-height: 70vh; } diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 92b6557..d200f77 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -163,7 +163,7 @@
- +
diff --git a/resources/views/livewire/dashboard/mailbox/inbox.blade.php b/resources/views/livewire/dashboard/mailbox/inbox.blade.php index 13794c0..70469d4 100644 --- a/resources/views/livewire/dashboard/mailbox/inbox.blade.php +++ b/resources/views/livewire/dashboard/mailbox/inbox.blade.php @@ -62,7 +62,12 @@
- {{ __('Create') }} +
+ {{ __('Random') }} Email +
+
+ {{ __('Create') }} +
@@ -71,10 +76,10 @@
- {{ __('Random') }} Email + Disposable Gmail
- Disposable Gmail + Disposable Gmail
diff --git a/resources/views/livewire/frontend/action.blade.php b/resources/views/livewire/frontend/action.blade.php index 496939f..fae76cd 100644 --- a/resources/views/livewire/frontend/action.blade.php +++ b/resources/views/livewire/frontend/action.blade.php @@ -2,7 +2,9 @@ @if($action == "random") {{ __('Random') }} Email @elseif($action == "gmail") - Disposable Gmail + Disposable Gmail +@elseif($action == "outlook") + Disposable Outlook @elseif($action == "delete") {{ __('Delete') }} @elseif($action == "customEmail") @@ -32,7 +34,8 @@
- {{ __('Cancel') }} +{{-- {{ __('Cancel') }}--}} + {{ __('Random') }} Email {{ __('Create') }}