From a82504b062f42ebf8e60e36b2fc4f387be10d42c Mon Sep 17 00:00:00 2001
From: "Yunchuan Li (George)" <liyunchuanm9@gmail.com>
Date: Wed, 28 Jul 2021 18:04:46 +1000
Subject: [PATCH 1/2] email set up complete

---
 app/Action/EmailAction.php                    | 10 ++++++
 .../Controllers/Sample/SampleController.php   | 15 ++++++++
 app/Mail/WelcomeMail.php                      | 34 +++++++++++++++++++
 app/Task/EmailTasks.php                       | 17 ++++++++++
 resources/views/email/welcome.blade.php       | 12 +++++++
 routes/web.php                                |  4 +++
 tests/Unit/Email/EmailTest.php                | 18 ++++++++++
 7 files changed, 110 insertions(+)
 create mode 100644 app/Action/EmailAction.php
 create mode 100644 app/Mail/WelcomeMail.php
 create mode 100644 app/Task/EmailTasks.php
 create mode 100644 resources/views/email/welcome.blade.php
 create mode 100644 tests/Unit/Email/EmailTest.php

diff --git a/app/Action/EmailAction.php b/app/Action/EmailAction.php
new file mode 100644
index 0000000..e219b0b
--- /dev/null
+++ b/app/Action/EmailAction.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Action;
+
+use Illuminate\Database\Eloquent\Model;
+
+class EmailAction extends Model
+{
+    //
+}
diff --git a/app/Http/Controllers/Sample/SampleController.php b/app/Http/Controllers/Sample/SampleController.php
index fc13086..3ad32f6 100644
--- a/app/Http/Controllers/Sample/SampleController.php
+++ b/app/Http/Controllers/Sample/SampleController.php
@@ -3,7 +3,12 @@
 namespace App\Http\Controllers\Sample;
 
 use App\Http\Controllers\Controller;
+use App\Action\EmailAction;
+
 use Illuminate\Http\Request;
+//use App\Mail\WelcomeMail;
+//use Illuminate\Support\Facades\Mail;
+
 
 class SampleController extends Controller
 {
@@ -17,4 +22,14 @@ class SampleController extends Controller
     {
         return "world";
     }
+
+    public function sendEmail(Request $request)
+    {
+//        Mail::to("email@email.com")->send(new WelcomeMail());
+//        Mail::to("client@email.com")
+//            ->queue(new WelcomeMail());
+//        EmailTasks::sendWelcomeEmail($addr);
+//        return new WelcomeMail();
+        return EmailAction::sendEmail()
+    }
 }
diff --git a/app/Mail/WelcomeMail.php b/app/Mail/WelcomeMail.php
new file mode 100644
index 0000000..de7a133
--- /dev/null
+++ b/app/Mail/WelcomeMail.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Mail;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+class WelcomeMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        //
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+//        return $this->from('server@example.com')
+        return $this->markdown('email.welcome');
+    }
+}
diff --git a/app/Task/EmailTasks.php b/app/Task/EmailTasks.php
new file mode 100644
index 0000000..d4f736f
--- /dev/null
+++ b/app/Task/EmailTasks.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Task;
+
+use App\Mail\WelcomeMail;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\Mail;
+
+class EmailTasks
+{
+    //
+    public static function sendWelcomeEmail($addr)
+    {
+        Mail::to($addr)->queue(new WelcomeMail());
+        return new WelcomeMail();
+    }
+}
diff --git a/resources/views/email/welcome.blade.php b/resources/views/email/welcome.blade.php
new file mode 100644
index 0000000..bc41428
--- /dev/null
+++ b/resources/views/email/welcome.blade.php
@@ -0,0 +1,12 @@
+@component('mail::message')
+# Introduction
+
+The body of your message.
+
+@component('mail::button', ['url' => ''])
+Button Text
+@endcomponent
+
+Thanks,<br>
+{{ config('app.name') }}
+@endcomponent
diff --git a/routes/web.php b/routes/web.php
index 1ea7051..476103c 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,5 +1,6 @@
 <?php
 
+use App\Http\Controllers\Sample\SampleController;
 use Illuminate\Support\Facades\Route;
 
 /*
@@ -15,3 +16,6 @@ use Illuminate\Support\Facades\Route;
 
 Route::get('/', 'Sample\SampleController@welcome');
 Route::get('/hello', 'Sample\SampleController@hello');
+
+Route::get('/sendEmail', 'Sample\SampleController@sendEmail');
+
diff --git a/tests/Unit/Email/EmailTest.php b/tests/Unit/Email/EmailTest.php
new file mode 100644
index 0000000..6be15c8
--- /dev/null
+++ b/tests/Unit/Email/EmailTest.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Tests\Unit\Email;
+
+use PHPUnit\Framework\TestCase;
+
+class EmailTest extends TestCase
+{
+    /**
+     * A basic unit test example.
+     *
+     * @return void
+     */
+    public function testExample()
+    {
+        $this->assertTrue(true);
+    }
+}
-- 
GitLab


From 91ba595b2ca4cbd92739ff77c629f5ab616b9b20 Mon Sep 17 00:00:00 2001
From: "Yunchuan Li (George)" <liyunchuanm9@gmail.com>
Date: Thu, 5 Aug 2021 11:39:49 +1000
Subject: [PATCH 2/2] sample email web send

---
 app/Action/EmailAction.php                       | 7 +++++++
 app/Http/Controllers/Sample/SampleController.php | 3 ++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/app/Action/EmailAction.php b/app/Action/EmailAction.php
index e219b0b..a6719d4 100644
--- a/app/Action/EmailAction.php
+++ b/app/Action/EmailAction.php
@@ -2,9 +2,16 @@
 
 namespace App\Action;
 
+use App\Mail\WelcomeMail;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\Mail;
 
 class EmailAction extends Model
 {
     //
+    public static function sendEmail($addr)
+    {
+        Mail::to($addr)->queue(new WelcomeMail());
+        return new WelcomeMail();
+    }
 }
diff --git a/app/Http/Controllers/Sample/SampleController.php b/app/Http/Controllers/Sample/SampleController.php
index 3ad32f6..d999691 100644
--- a/app/Http/Controllers/Sample/SampleController.php
+++ b/app/Http/Controllers/Sample/SampleController.php
@@ -30,6 +30,7 @@ class SampleController extends Controller
 //            ->queue(new WelcomeMail());
 //        EmailTasks::sendWelcomeEmail($addr);
 //        return new WelcomeMail();
-        return EmailAction::sendEmail()
+//        $addr = $request->input("dstEmail");
+        return EmailAction::sendEmail("client_email@example.com");
     }
 }
-- 
GitLab