บน Laravel มี Package ที่ใช้ในการ Send Mail ซึ่งก็มีหลายตัว แต่ที่นิยมใช้กันก็คือ PHPMailer โดยมี Feature ครบเครื่อง ไม่ว่าจะเป็น CC, BCC, Attachment, Validation และยัง Support ภาษาไทยด้วย
Requirement
- PHP 5.5+
Get Started
- ทำการติดตั้ง Laravel Package ผ่าน Composer
# C:\Apache24\htdocs\laravel> composer require phpmailer/phpmailer
- ทำการ Create Route ในไฟล์ routes/web.php
Route::get('mail/{receiver}','MailController@index');
- ทำการ Generate Controller ที่ชื่อว่า MailController
# C:\Apache24\htdocs\laravel> php artisan make:controller MailController
- ทำการแก้ไขไฟล์ app/Http/Controllers/MailController.php ตัวอย่างการเชื่อมต่อ SMTP Authentication ของ Google
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class MailController extends Controller
{
public function index($receiver)
{
$mail = new PHPMailer(true);
try {
//Server settings
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'user@gmail.com';
$mail->Password = 'secret';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
//Recipients
$mail->setFrom('sender@example.com', 'Sender');
$mail->addAddress($receiver, 'Receiver');
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
// Attachments
$mail->addAttachment('/var/tmp/file.tar.gz');
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');
// Content
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body in bold!';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
}
}
- หากต้องการเชื่อมต่อผ่าน SMTP แบบไม่ต้อง Authentication จะต้องแก้ไขไฟล์ตามโค้ดด้านล่าง
$mail->SMTPAuth = false;
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
อ่านเพิ่มเติม : https://bit.ly/1e8KhJ6
Tagged: Laravel
Leave a Reply