จริง ๆแล้ว 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 ความคิดเห็น:
แสดงความคิดเห็น