Mail ( การส่งเมล์ )
<a name="configuration"></a> ## การตั้งค่า
Laravel นำไลบราลี่ SwiftMailer มาใช้งาน การตั้งค่าอยู่ที่ app/config/mail.php,โดยจะให้เราเปลี่ยน SMTP host, port, และ username กับ password, แล้วก็ค่า from คือค่าเริ่มต้นของชื่อผู้รับ. ถ้าเราต้องการใช้ไลบรารี php mail ในการส่งก็เพียงเปลี่ยน driver เป็น mail
<a name="basic-usage"></a> ## การใช้งานเบื้องต้น
ฟังก์ชัน Mail::send ใช้ในการส่งอีเมล์
1 Mail::send('emails.welcome', $data, function($message)
2 {
3 $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
4 });
เมทอด send ตัวแปรแรกคือไฟล์ html ที่เป็นรูปแบบข้อมความในเมล์. ตัวที่สองคือข้อมูลที่จะเขียนลงเมล์ $data ซึ่งจะถูกส่งไปยัง view ตัวที่สามเป็นฟังก์ชันที่ใช้กำหนดค่าต่างๆของอีเมล์
Note: ตัวแปร
$messageคือออปเจ็คของตัว Swiftmailer class ซึ่งเราจะใช้กำหนดค่าต่างๆของเมล์
1 Mail::send(array('html.view', 'text.view'), $data, $callback);
ตัวอย่างคือเราเลือกที่จะส่งไปในรูปแบบใด html หรือ text
1 Mail::send(array('text' => 'view'), $data, $callback);
ตัวอย่างการปรับแต่งเนื้อหาภายในเมล์:
1 Mail::send('emails.welcome', $data, function($message)
2 {
3 $message->from('us@example.com', 'Laravel');
4
5 $message->to('foo@example.com')->cc('bar@example.com');
6
7 $message->attach($pathToFile);
8 });
เมื่อจะทำการแนบไฟล์เราต้องใส่นามสกุลกับชื่อให้มันด้วย:
1 $message->attach($pathToFile, array('as' => $display, 'mime' => $mime));
<a name="embedding-inline-attachments"></a> ## การแทรกไฟล์ไว้ระหว่างบรรทัด
เราสามารถแนบรูปไปโดยไม่ให้เเสดงได้โดยใช้ฟังก์ชัน embed
ตัวอย่างการใช้งาน
1 <body>
2 Here is an image:
3
4 <img src="<?php echo $message->embed($pathToFile); ?>">
5 </body>
<br /><br /><br /> <a name="queueing-mail"></a> ## เรียงลำดับการส่งอีเมล์
ในการส่งอีเมล์จำนวนมากนั้นเรา ต้องทำการเรียงลำดับการส่ง เพื่อการนั้น laravel เตรียมคลาส Queue มาให้เราใช้ในการเรียงลำดับการส่งอีเมล์แล้วครับ
ตัวอย่าง
1 Mail::queue('emails.welcome', $data, function($message)
2 {
3 $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
4 });
เราสามารถหน่วงเวลาการส่งโดยใช้ฟังก์ชัน later ตามตัวอย่างครับ
1 Mail::later(5, 'emails.welcome', $data, function($message)
2 {
3 $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
4 });
ถ้าเรามีหลายคิว มีฟังก์ชันให้เราเรียงคิวอีก คือ queueOn และ laterOn
1 Mail::queueOn('queue-name', 'emails.welcome', $data, function($message)
2 {
3 $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
4 });
<a name="mail-and-local-development"></a> ## Mail & Local Development
ในการพัฒนานั้น เรายังไม่ต้องใช้งานเมล์จริงๆในการส่งก็ได้ laravel เตรียมฟังก์ชัน Mail::pretend หรือตั้งค่า pretend ใน app/config/mail.php เป็น true. เพื่อเข้าสู่ pretend mode ข้อความบนเมล์ที่ถูกส่งจะถูกเขียนบนล็อกแทย