โค้ดการส่งจดหมายเวียน ด้วย phpmailer

มีคำถามมาจากบอร์ดว่าผมส่งอีเมล์ยังไงให้เป็น UTF-8 และไม่ติดอยู่ใน Junk รวมถึงสามารถส่งหาคนเกือบหมื่นโดยไม่ถูกแบนหาว่าเป็น Spam

เคล็ดลับการส่งเมล์อยู่ที่การใช้ 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 rar (653) ก่อนครับ โดยติดตั้งไว้ไดเร็คทอรี่เดียวกันกับโค้ดนี้แหละครับ ไม่ต้องปรับแต่งอะไรโค้ด แล้วก็ทดสอบได้เลยครับ

ลองไปดัดแปลงกันดูนะครับ คุณอาจต้องจัดการเปลี่ยนแปลงโค้ดบางส่วนให้เป็นไปตามค่ากำหนดของเว็บคุณ เนื่องจากโค้ดที่เห็น เป็นโค้ดที่ผมใช้บนเว็บผมครับ
ผู้เขียน goragod โพสต์เมื่อ 21 ก.ค. 2552 เปิดดู 14,877 ป้ายกำกับ PHPMailerEmail
^