ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?
เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

หน้า: [1]   ลงล่าง
  ตอบ  |  ส่งหัวข้อนี้  |  พิมพ์  
ผู้เขียน หัวข้อ: การส่ง email เป็นภาษาไทย (UTF-8) ใน PHP  (อ่าน 8213 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2877


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« เมื่อ: October 06, 2008, 04:38 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง


  พอดีเคยทำระบบส่งรหัสผ่านทางเมลล์อัตโนมัติแล้วทีนี้ หัวข้ออีเมลล์มันเป็นภาษาขอม แต่ตัวอีเมลล์เป็นภาษาไทยอ่านได้ ก็เลยงง วันนี้มาเจอบทความนี้เลยเก็บเป็นความรู้ใว้ก่อน ซึ่งยังไม่ลองเอาไปใช้ดู...อิอิ

   ในภาษา PHP จะมี function สำหรับส่งเมล์คือ function mail(); นั่นเอง หลายๆคนคงเคยใช้ function นี้ในการส่งเมล์มาแล้ว วันนี้จะมาแนะนำวิธีการส่งเมล์เป็นภาษาไทย และใช้ encoding เป็น UTF-8 กันครับ
    การส่งเมล์เป็นภาษาไทย ถ้าต้องการส่งถึงผู้รับแล้ว ข้อความและหัวข้อของอีเมล์ ไม่ผิดพลาด สามารถใช้โปรแกรม email client อ่านเป็นภาษาไทย ทั้งหัวข้อและข้อความนั้น เราต้องระบุ encoding ของ หัวข้อและข้อความ ของอีเมล์ก่อนที่จะส่งไป สำหรับการกำหนด encoding ของ subject ให้เป็น encoding แบบ UTF-8 สามารถทำได้โดยเข้ารหัสของ subject ก่อนที่จะส่งดังนี้

โค๊ด:
$subject = '=?utf-8?B?'.base64_encode("หัวข้ออีเมล์ภาษาไทยแบบ UTF-8").'?=';

    สำหรับการกำหนด encoding ของข้อความในอีเมล์ สามารถกำหนด encoding ลงไปใน header ของอีเมล์ได้เลย และไม่ต้องเข้ารหัสข้อความใหม่เหมือนกับ subject ดังตัวอย่าง

โค๊ด:
$header = 'Content-type: text/plain; charset=utf-8'. "\r\n";

ตัวอย่างการส่ง email เป็นภาษาไทย (UTF-8) ด้วย PHP

โค๊ด:
<?PHP
$to = "customer@somedomain.com";
$subject = "=?utf-8?B?".base64_encode("หัวข้อของอีเมล์ภาษาไทย UTF-8")."?=";
$header  = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=utf-8\r\n";
$header .= "From: admin@somedomain.com\r\n";
$header .= "Reply-To: admin@somedomain.com\r\n";
$header .= "X-Mailer: PHP/picoHosting";
$message = "ข้อความบรรทัดที่ 1\r\n";
$message = "ข้อความบรรทัดที่ 2\r\n";
$message = "ข้อความบรรทัดที่ 3\r\n";
mail($to, $subject, $messsage, $header);
?>

ข้อแนะนำ การใช้งาน "\r\n" กับ '\r\n' ไม่เหมือนกันนะครับ เพราะฉะนั้น ควรตรวจสอบความถูกต้องของ source code ด้วยครับ

credit: http://www.picohosting.com/?page=howto&content=mailutf8

บันทึกการเข้า

Nathan_bc
อดีตกาลผ่านมาแล้วก็ช่างมัน
ทำเนียบรุ่น BC46
โปรแกรมเมอร์ระดับโคตรเทพ
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 2877


ปัจจุบันยังชีพอยู่สู้ต่อไป

one_bc@hotmail.com 085-8383607
ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: October 06, 2008, 05:03 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ซึ่งยังไม่ลองเอาไปใช้ดู...อิอิ

ลองแล้วได้ผล...อิอิ เขียนเองตอบเอง 55  :-*
บันทึกการเข้า

wawa
บุคคลทั่วไป


อีเมล์
« ตอบ #2 เมื่อ: March 08, 2010, 09:37 AM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ลองแล้ว message ไม่ขึ้นเลยค่ะ
บันทึกการเข้า
pich
บุคคลทั่วไป


อีเมล์
« ตอบ #3 เมื่อ: May 18, 2010, 12:31 PM »
แบ่งปัน ตอบโดยอ้างถึงข้อความอ้างถึง

ไปแก้ไขตามคำแนะนำ ส่งภาษาไทยได้เลยรวมทั้ง subj ก็ไทยก็ไม่มีปัญหา
ขอบคุณมากครับ  
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  ตอบ  |  ส่งหัวข้อนี้  |  พิมพ์  
 
กระโดดไป:  


Valid XHTML 1.0! Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC | Thai language by ThaiSMF
DSM: deruni
Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.139 วินาที กับ 24 คำสั่ง
สัญญาอนุญาตของครีเอทีฟคอมมอนส์
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน 3.0 ประเทศไทย.