diff --git a/changelog.md b/changelog.md
index 6a49e0ce..1cba9341 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,6 @@
## Version 2.0.16
#### Release date: 8. April 2022
-- Test mailgun and postmark connection before storing your credentials into the app
+- Test mailgun, ses and postmark connection before storing your credentials into the app
- UI enhancements & fixes
## Version 2.0.15
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 2f625b27..c0b38774 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -6,7 +6,7 @@
"/chunks/status-check.js": "/chunks/status-check.js?id=f82f9939c1326fe2",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
"/chunks/database.js": "/chunks/database.js?id=15cc488117dccf7b",
- "/chunks/environment.js": "/chunks/environment.js?id=4812fa7819b6b000",
+ "/chunks/environment.js": "/chunks/environment.js?id=4764d8f6d5c22b3c",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=15938ff1ad2d6ed2",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8",
"/chunks/shared.js": "/chunks/shared.js?id=ec06bf0d3ada0f65",
@@ -42,7 +42,7 @@
"/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c",
"/chunks/app-index.js": "/chunks/app-index.js?id=efdbfa062749ca00",
- "/chunks/app-environment.js": "/chunks/app-environment.js?id=831c66051bcd43db",
+ "/chunks/app-environment.js": "/chunks/app-environment.js?id=0f8a318553409406",
"/chunks/app-others.js": "/chunks/app-others.js?id=abb8d96cd7c3a576",
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a",
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd",
diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue
index 7c95b5d6..62103af7 100644
--- a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue
+++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue
@@ -454,14 +454,25 @@
-
+
+
+
+
+
+
+
+ class="focus-border-theme input-dark"
+ v-model="ses.sender"
+ placeholder="Type your identity email..."
+ type="text"
+ :class="{ '!border-rose-600': errors[0] }"
+ />
@@ -913,7 +924,8 @@ export default {
secret_access_key: undefined,
default_region: undefined,
session_token: undefined,
- },
+ sender: undefined,
+ },
smtp: {
host: undefined,
port: undefined,
diff --git a/resources/js/views/SetupWizard/EnvironmentSetup.vue b/resources/js/views/SetupWizard/EnvironmentSetup.vue
index e2c24c4d..e716b3de 100644
--- a/resources/js/views/SetupWizard/EnvironmentSetup.vue
+++ b/resources/js/views/SetupWizard/EnvironmentSetup.vue
@@ -398,17 +398,28 @@
rules="required"
v-slot="{ errors }"
>
-
-
+
+
+
+
+
+
+
+
'ses',
+ 'mail.from.address' => $credentials['identity'],
+ 'mail.from.name' => $credentials['identity'],
+ 'services.ses.key' => $credentials['access_key'],
+ 'services.ses.secret' => $credentials['secret_access_key'],
+ 'services.ses.region' => $credentials['default_region'],
+ 'services.ses.token' => $credentials['session_token'] ?? null,
+ ]);
+
+ // Send test email
+ Mail::to($credentials['identity'])->send(new TestMail($credentials['identity']));
+ } catch (TransportException | LogicException | Exception $error) {
+ abort(
+ response()->json([
+ 'type' => 'mailer-connection-error',
+ 'title' => 'Mail Connection Error',
+ 'message' => $error->getMessage(),
+ ], 401)
+ );
+ }
+ }
+}
diff --git a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php
index 35738447..d0fd6476 100644
--- a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php
+++ b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php
@@ -3,6 +3,7 @@ namespace Domain\Settings\Controllers;
use Artisan;
use Illuminate\Http\JsonResponse;
+use Domain\Settings\Actions\TestSESConnectionAction;
use Domain\Settings\Actions\TestSMTPConnectionAction;
use Domain\Settings\Actions\TestMailgunConnectionAction;
use Domain\Settings\Actions\TestPostmarkConnectionAction;
@@ -14,6 +15,7 @@ class StoreEmailCredentialsController
private TestPostmarkConnectionAction $testPostmarkConnection,
private TestMailgunConnectionAction $testMailgunConnection,
private TestSMTPConnectionAction $testSMTPConnection,
+ private TestSESConnectionAction $testSESConnection,
) {
}
@@ -46,11 +48,18 @@ class StoreEmailCredentialsController
'token' => $request->input('postmark.token'),
'sender' => $request->input('postmark.sender'),
]),
+ 'ses' => ($this->testSESConnection)([
+ 'access_key' => $request->input('ses.access_key'),
+ 'secret_access_key' => $request->input('ses.secret_access_key'),
+ 'default_region' => $request->input('ses.default_region'),
+ 'session_token' => $request->input('ses.session_token'),
+ 'identity' => $request->input('ses.sender'),
+ ]),
};
$mail = [
'log' => [
- 'MAIL_DRIVER' => 'log',
+ 'MAIL_DRIVER' => 'log',
],
'postmark' => [
'MAIL_DRIVER' => 'postmark',
@@ -74,6 +83,8 @@ class StoreEmailCredentialsController
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
+ 'MAIL_FROM_ADDRESS' => $request->input('ses.sender'),
+ 'MAIL_FROM_NAME' => $request->input('ses.sender'),
],
'mailgun' => [
'MAIL_DRIVER' => 'mailgun',
diff --git a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php
index 0071dc04..19cf8580 100644
--- a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php
+++ b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php
@@ -6,6 +6,7 @@ use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\Settings\DTO\S3CredentialsData;
use Domain\Settings\Actions\TestS3ConnectionAction;
+use Domain\Settings\Actions\TestSESConnectionAction;
use Domain\Settings\Actions\TestSMTPConnectionAction;
use Domain\Settings\Actions\TestMailgunConnectionAction;
use Domain\Settings\Actions\TestPostmarkConnectionAction;
@@ -15,6 +16,7 @@ class StoreEnvironmentSettingsController extends Controller
{
public function __construct(
private TestS3ConnectionAction $testS3Connection,
+ private TestSESConnectionAction $testSESConnection,
private TestSMTPConnectionAction $testSMTPConnection,
private TestMailgunConnectionAction $testMailgunConnection,
private TestPostmarkConnectionAction $testPostmarkConnection,
@@ -53,6 +55,13 @@ class StoreEnvironmentSettingsController extends Controller
'token' => $request->input('postmark.token'),
'sender' => $request->input('postmark.sender'),
]),
+ 'ses' => ($this->testSESConnection)([
+ 'access_key' => $request->input('ses.access_key'),
+ 'secret_access_key' => $request->input('ses.secret_access_key'),
+ 'default_region' => $request->input('ses.default_region'),
+ 'session_token' => $request->input('ses.session_token'),
+ 'identity' => $request->input('ses.sender'),
+ ]),
};
$setup = [
@@ -116,6 +125,8 @@ class StoreEnvironmentSettingsController extends Controller
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
+ 'MAIL_FROM_ADDRESS' => $request->input('ses.sender'),
+ 'MAIL_FROM_NAME' => $request->input('ses.sender'),
],
'mailgun' => [
'MAIL_DRIVER' => 'mailgun',