โค้ดการส่งจดหมายเวียน ด้วย phpmailer
มีคำถามมาจากบอร์ดว่าผมส่งอีเมล์ยังไงให้เป็น UTF-8 และไม่ติดอยู่ใน Junk รวมถึงสามารถส่งหาคนเกือบหมื่นโดยไม่ถูกแบนหาว่าเป็น Spam
เคล็ดลับการส่งเมล์อยู่ที่การใช้ phpmailer ในการส่งครับ ซึ่งเวอร์ชั่นที่ผมใช้นี้สามารถส่งแบบ UTF-8 ได้อย่างสมบูรณ์ นอกจากนี้มันยังสามารถแนบไฟล์ได้ รวมถึงสามารถ ส่งเมล์ผ่านบริการของ gmail ได้ด้วย
ในตอนนี้ผมจะพูดถึงแค่การส่งจดหมายเวียน และการใช้งาน phpmailer เบื่องต้นเท่านั้นนะครับ
ก่อนอื่นคุณต้องติดตั้ง phpmailer (653) ก่อนครับ โดยติดตั้งไว้ไดเร็คทอรี่เดียวกันกับโค้ดนี้แหละครับ ไม่ต้องปรับแต่งอะไรโค้ด แล้วก็ทดสอบได้เลยครับ
ลองไปดัดแปลงกันดูนะครับ คุณอาจต้องจัดการเปลี่ยนแปลงโค้ดบางส่วนให้เป็นไปตามค่ากำหนดของเว็บคุณ เนื่องจากโค้ดที่เห็น เป็นโค้ดที่ผมใช้บนเว็บผมครับ
เคล็ดลับการส่งเมล์อยู่ที่การใช้ phpmailer ในการส่งครับ ซึ่งเวอร์ชั่นที่ผมใช้นี้สามารถส่งแบบ UTF-8 ได้อย่างสมบูรณ์ นอกจากนี้มันยังสามารถแนบไฟล์ได้ รวมถึงสามารถ ส่งเมล์ผ่านบริการของ gmail ได้ด้วย
ในตอนนี้ผมจะพูดถึงแค่การส่งจดหมายเวียน และการใช้งาน phpmailer เบื่องต้นเท่านั้นนะครับ
<?php
// ค่ากำหนดของเว็บไซต์
include ('config.php');
// class database
include ('db.class.php');
// เรียกใช้งานฐานข้อมูล
$db = new sql($config[db_server], $config[db_username], $config[db_password], $config[db_name], $config[db_language]);
// เรียกใช้ phpmailer
require_once ('class.phpmailer.php');
// อ่านรายชื่อสมาชิกทั้งหมดจากฐานข้อมูล
$sql = "SELECT * FROM user";
// วนลูปส่งทีละคน
foreach ($db->customQuery($sql) AS $item) {
// โค้ดการส่งเมล์
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
try {
$save[activatecode] = rndname(32); // สุ่มรหัส activate ใหม่
// จัดการข้อความที่จะส่งไปกับ email
$subject = "เรียนสมาชิก $config[web_title]";
$message = "เรียน คุณ $item[displayname] สมาชิก $config[web_title]<br /><br />
อีเมล์นี้ถูกส่งมาโดยระบบอัตโนมัติ เพื่อใช้ในการยืนยันการเป็นสมาชิกของ <a href=\"$config[web_url]\">$config[web_title]</a><br />
หากคุณได้รับอีเมล์มากกว่า 1 ฉบับ โปรดเลือกอีเมล์ที่ใช้ชื่อที่ถูกต้องของคุณ เพือใช้ในการเข้าระบบ<br /><br />
ชื่อ :: $item[username]<br />
รหัสผ่าน :: $item[password]<br /><br />
ขอให้ คุณ$item[displayname] เข้าไปยืนยันและตรวจสอบความถูกต้องของข้อมูลพร้อมเปลี่ยนรหัสผ่านใหม่ได้ ที่้ <a href=\"$config[web_url]/modules/member/activate.php?id=$save[activatecode]\">$config[web_url]/modules/member/activate.php?id=$save[activatecode]</a><br />
สมาชิกที่ไม่ได้ทำการยืนยันอีเมล์จะถูกลบออกจากระบบเป็นการถาวรภายใน 30 วัน<br /><br />
หากอีเมล์นี้รบกวนท่าน <a href=\"mailto:$config[webmaster_email]\">เว็บมาสเตอร์</a> ต้องขออภัยมา ณ. ที่นี้ด้วย";
// แสดงรายชื่ออีเมล์ที่ส่ง
echo $item[email];
// ส่งเมล์
$mail->Encoding = "quoted-printable";
$mail->CharSet = "utf-8";
$mail->AddReplyTo($config[admin_email], $config[admin_email]);
$mail->AddAddress($item[email], $item[username]);
$mail->SetFrom($config[webmaster_email], $config[webmaster_email]);
$mail->Subject = $subject;
$mail->MsgHTML($message);
$mail->Send();
// จบโค้ดการส่งเมล์
}
catch (phpmailerException$e) {
echo ' MAIL_SEND_ERROR';
}
catch (Exception $e) {
echo ' MAIL_SEND_ERROR';
}
echo '<br />';
}
$db->close();
?>
ก่อนอื่นคุณต้องติดตั้ง phpmailer (653) ก่อนครับ โดยติดตั้งไว้ไดเร็คทอรี่เดียวกันกับโค้ดนี้แหละครับ ไม่ต้องปรับแต่งอะไรโค้ด แล้วก็ทดสอบได้เลยครับ
ลองไปดัดแปลงกันดูนะครับ คุณอาจต้องจัดการเปลี่ยนแปลงโค้ดบางส่วนให้เป็นไปตามค่ากำหนดของเว็บคุณ เนื่องจากโค้ดที่เห็น เป็นโค้ดที่ผมใช้บนเว็บผมครับ