project lazyman
Technologies For Everyone
3 min readApr 25, 2017

--

Laravel ตอนที่ 4 — การส่งเมลล์ด้วย MailGun

MailGun เป็นอีกหนึ่งเจ้าที่ให้บริการสำหรับส่งเมลล์ผ่านเว็บไซต์ของเรา ซึ่งข้อดีคือ มีมาตรฐาน ทำให้เมลล์ที่ถูกส่งไป ไม่ถูกมองว่าเป็น Junk mail แล้วไปอยู่ในกล่องเมลล์ขยะ ของผู้ใช้เมลล์แต่ละคน

วันนี้เรามาเริ่มต้อนใช้ MailGun กันครับ แน่นอนว่าอันดับแรกก็ต้องสมัครสมาชิกก่อน ให้เราเข้าไปที่ https://www.mailgun.com/ หลังจากนั้นก็กด SIGN UP เพื่อทำการสมัครเลยครับ

***หลังจากสมัครแล้วก็อย่าลืมไปยืนยัน email นะครับ

หลังจากเรากดยืนยัน email แล้ว ก็จะพบกับหน้าที่ให้เราใส่เบอร์โทรศัพท์ เพื่อที่ทาง MailGun จะส่งรหัสยืนยันกลับมาหาเราครับ

หลังจากนั้น เราจะได้รับรหัสยืนยันผ่านทาง SMS ให้เรานำรหัส 6 หลักมาใส่ครับ

เมื่อใส่เสร็จแล้วกด validate ครับ

ถ้าขึ้นแบบนี้แสดงว่า Activate เรียบร้อยครับ

ต่อมาจะเป็นขั้นตอนการ Setup นะครับ

1.กด Add Custom Domain ครับ เพื่อทำการเพิ่มเว็บไซต์ของเราครับ

2.ใส่ชื่อเว็บไซต์ของเราโดยไม่ต้องใส่ www ครับ เช่น example.com

3.ต่อมาให้เราทำการยืนยันโดเมนครับ โดยการนำค่าให้ทาง mailgun ให้มา ไปใส่ใน DNS ครับ

*** ของผมใช้ Cloudflare ครับ จะใช้งานค่อนข้างสะดวก ส่วนใครที่เป็นแชร์โฮส ก็ให้นำไปใส่ใน DNS Management ครับ

4.หลังจากตั้งค่าเสร็จแล้วก็ทำการกดยืนยันครับ พอเรามาดูที่ Sending Domains ก็จะมีสถานะขึ้นว่า Active (หากยังไม่ขึ้น ให้ทำการตรวจสอบให้แน่ใจ แล้วกดที่ Check DNS Records Now)

เป็นไงครับ เหนื่อยกันรึยังเอ่ย ต่อไปจะเป็นการเขียนโค้ดเพื่อทำการส่งเมลล์ครับ

การเขียนโค้ดส่งเมลล์

1.ทำการเปิดไฟล์ composer.json ในโฟร์เดอร์โปรเจคเราขึ้นมาแล้วทำการเพิ่ม “guzzlehttp/guzzle”: “~5.3|~6.0” เข้าไปใน require-dev หลังจากนั้นให้สั่ง composer update ใน CMD

2.ให้ทำการเปิดไฟล์ /config/mail.php เพื่อทำการ config ให้ laravel ของเรานั้นเชื่อมต่อกับ mailgun ครับ

*** ให้เราตั้งค่า config ให้ตรงกับ mailgun ครับ

MAIL_DRIVER=mailgunMAIL_HOST=smtp.mailgun.orgMAIL_PORT=587MAIL_USERNAME=your-emailMAIL_PASSWORD=your-passwordMAIL_ENCRYPTION=tls

3.หลังจากเราตั้งค่าเสร็จแล้ว ให้เปิดไฟล์ /config/service.php เพื่อทำการเพิ่ม api key เข้าไปครับ

*** ในส่วนนี้เราจะแก้ไขเฉพาะ mailgun ครับ ข้อมูลดูได้จากหน้าเว็บ mailgun โดยคลิกเข้าไปที่ชื่อโดเมนที่เราทำการเพิ่มไว้ตอนแรกครับ

  • mailgun domain ให้เราใส่เลข ip ลงไปครับ
  • secret ให้ใส api key ลงไปครับ

4.หลังจากเราแก้ config ไฟล์เสร็จแล้ว ก็เริ่มทำการเขียนโค้ดส่งเมลล์กันได้เลยครับ ในที่นี้จะเขียนไว้ใน Mail Controller ครับ โดยใช้ชื่อว่า sendEmailReminder

<?phpnamespace App\Http\Controllers;use Mail;use Illuminate\Http\Request;use App\Http\Controllers\Controller;class MailController extends Controller{public function sendEmailReminder(){$data = ‘your-message’;Mail::send(‘your-topic’, $data, function ($message) {$message->from(‘your-email’, ‘your-name’);$message->to(‘target-email’);});}}

เสร็จแล้วทำการทดลองส่งดูได้เลยครับ

--

--