จริง ๆแล้ว Laravel เอง มีความสามารถเรื่องการส่งเมล์ได้อยู่แล้ว แต่คุณอาจเจอกับปัญหา เมล์ของ JUNK ! ซึ่งวันนี้ผมจะมาแนะนำวิธีการแก้ปัญหาที่ผมเจอมากับตัวเองให้ฟัง
เอาล่ะก่อนอื่นมา คุณต้องใช้ Laravel framework ก่อนน่ะหากยังไม่มีหรือติดตั้งไม่เป็น สามารถไปอ่านในบทความก่อน ๆ ของผมได้ ผมจะขอลัดขั้นตอนไปถึงการติดตั้ง PHPMailer เลยแล้วกัน
-----------------------------------------------------------------------------------------------------------------------
ขอบขอบคุณ Composer ไว้ก่อนเลยแล้วกันที่ทำให้เราจัดหาติดตั้ง Package ดี ๆ มาใช้งานได้ง่ายคล่องมากขึ้น เอาล่ะมาเริ่มกันเลย
1. แก้ไข FIle composer.json
เพิ่ม require : "phpmailer/phpmailer": "~5.2"
เมื่อเสร็ดแล้วก็รันคำสั่งผ่านทาง command line โดย Composer update หลักการทำงานของ composer คือ จะทำการตรวจสอบ config file composer.json ว่ามี package อะไรบ้าง ซึ่งจะเชื่อโยงกับ Host ของ https://packagist.org/ ซึ่งได้รวบรวม package ของ PHP ไว้มากมายเรียกได้ว่า "ขุมทรัพย์" ก็ว่าได้ เอาล่ะ รอสักพัก เมื่อโหลดเสร็ดแล้วก็เป็นอันเสร็ดพิธีการ
ปล.คุณสามารถยัดคำสั่ง php artisan ลงใน composer.json ได้ด้วยเช่นกัน เรียกอีกชื่อหนึ่งว่า Trigger
ค่าโดยปริยายของมันก็จะมี php artisan clear-compiled และ php artisan optimize พวกนี้จะ clear compiled แล้ว auto generate Autoload classs นั้นเอง เมื่อมีการ Input Package ใหม่ ๆ จะต้องทำ
ค่าโดยปริยายของมันก็จะมี php artisan clear-compiled และ php artisan optimize พวกนี้จะ clear compiled แล้ว auto generate Autoload classs นั้นเอง เมื่อมีการ Input Package ใหม่ ๆ จะต้องทำ
** คุณอาจทำได้อีกวิธีหนึ่งคือ composer require phpmailer/phpmailer
คือการรัน command ผ่านทาง composer ไปเลยสะดวกดีเหมือนกันเอาล่ะมีถึงการเรียกใช้งานผ่าน Laravel เมื่อ PHPmailer ติดตั้งลงไปใน Framework การทำงานเหมือนเป็น Facade ตัวหนึ่ง ซึ่งจะเรียกใช้งานที่ไหนก็ได้ ทำให้สะดวกขึ้น แต่ก็มีเทคนิคนิดหน่อยในการเรียกคือ การเติม
\
(backslash) is the namespace separator in PHP 5.3. ตัวอย่าง Code
try { $mail = new \PHPMailer(true); $mail->isSMTP(true); // tell to use smtp $mail->CharSet = "utf-8"; // set charset to utf8 $mail->SMTPAuth = true; // use smpt auth $mail->IsHTML(true); $mail->SMTPSecure = "tsl"; // or ssl $mail->Host = "localhost"; $mail->Port = "25"; $mail->Username = "username"; $mail->Password = "password"; $mail->setFrom('samarkchs@abc.com', 'Programmer'); $mail->Subject = 'Test Send mail'; $mail->MsgHTML($template); $mail->addAddress($email); $mail->send(); } catch (phpmailerException $e) { \Log::info('phpmailer:Exception:' . json_encode($e->getMessage())); dd($e); } catch (Exception $e) { \Log::info('mail:Exception:' . json_encode($e->getMessage())); dd($e); } return true;
หากเสร็ดแล้วก็สามารถใช้งานได้เลย ลองไปประยุคต์กันดูน่ะครับ
ปล.เหตุที่ ส่งผ่าน Kernel laravel แล้วลง Junk ผมได้ทำ poc ดูแล้ว โดยการ เอา Function embled ออกครับ
0 ความคิดเห็น:
แสดงความคิดเห็น