1.เมื่อผู้ส่ง (sender) ทำการส่งอีเมล์ email server หรือ email hosting จะมีหน้าที่ส่งออกไป ซึ่ง email server นี้ ก็จะมีบ้านเลขที่เป็นของตัวเอง หรือเรียก ว่า ip เช่น 123.456.789.1
2.หลังจากนั้นเจ้า email server ตัวนี้ก็มีหน้าที่ นำอีเมล์ฉบับนี้ไปส่งที่ปลายทาง แต่ก่อนจะถึ
ปลายทาง ทาง gmail ก็จะเช็คก่อนเลยว่า ip ตัวนี้ติด black list (บัญชีดำ) หรือไม่ ถ้าไม่ติดก็จะยอมปล่อยให้เข้า email server ของ gmail
3.เมื่อ Email Server ของ gmail ได้รับอีเมล์แล้ว ก็จะทำการคัดแยกว่า จะตีอีเมล์ฉบับนี้ให้ไปเข้า inbox หรือ spam box โดยปกติแล้ว gmail มีอัลกอริทึมที่ฉลาดพอจะวิเคราะห์ ข้อความในเมล์ ว่าเข้าข่ายอีเมล์ โฆษณา (spam mail) หรือไม่ โดยการวิเคราะห์ดังนี้
3.1 หากคุณส่ง email ที่มีหัวข้อ และ ใน เนื้อหามีข้อความคล้ายๆกัน ไปหาหลายๆคนในช่วงเวลาเดียวกันเป็นปริมาณมากๆ gmail มีสิทธ์ที่จะตีเมล์ฉบับนั้นไป spam box
3.2 หาก email ของคุณได้รับตีกลับ เช่น ระบุชื่อผู้รับผิดหลายๆครั้ง gmail ก็ มีสิทธ์ จะสงสัยว่า email คุณเป็น spam
3.3 การเขียนโปรแกรมที่เป็นแบบฟอร์มให้ลูกค้ากรอกข้อมูล แล้วส่งเมล์เข้าหาเรา ในลักษณะ PHP mail() function (สำหรับ Programmer) หากไม่ได้ใช้คำสั่งยืนยันตัวตน email จะไม่เข้าทั้ง inbox และ spam
จากกระบวนการทำงานดังกล่าว จะเห็นได้ว่าถึงแม้ email ของคุณจะไม่เคยทำอะไรผิดมาก่อนเลย แต่ การที่ gmail จะยอมให้คุณส่ง email เข้าได้นั้น gmail จะดูว่า server ที่ส่งเป็น ip อะไร ดังนั้นหากคุณใช้ email แบบที่ถูกแถมมากับ web hosting ก็มีสิทธ์ที่อยู่ดีๆ คุณจะส่ง email เข้า gmail ไม่ได้ เพราะ email ของบุคคลอื่นที่อยู่ใน server เดียวกัน เคยไปทำผิดเอาไว้ ซึ่งแทนที่ gmail จะ block email ปลายทางนั้น แต่ดัน block ip ของทั้ง email server และนี่คือเหตุผลหลักของปัญหา
ดังนั้นคุณควรเลือกใช้ระบบ email ที่แยกออกมาตาหาก เพราะ email server เหล่านี้ จะมีระบบบริหารจัดการที่ดี เช่น ข้อบังคับไม่ให้ user ส่งเมล์ จำนวนมากๆ หากมี email ไหนใช้งานผิดประเภท email server จะรีบทำการ block user นั้นก่อน เพื่อไม่ให้ทาง gmail มา block ทั้ง ip ของ server
require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->IsHTML(true); //หากส่งในรูปแบบ html ถ้าส่งเป็น text ก็ลบบรรทัดนี้ออกได้ $mail->CharSet = "utf-8"; //กำหนด charset ของภาษาในเมล์ให้ถูกต้อง เช่น tis-620 หรือ utf-8 $mail->Host = "localhost"; // SMTP server $mail->SMTPAuth = "true"; $mail->Username = "name@yourdomain.com"; // ชื่อ emil ที่ท่านใช้ login ควรสร้าง email user แยกต่างหากเพื่อใช้ส่งเมล์จากเว็บโดยเฉพาะเพื่อให้ตรวจสอบได้ง่าย $mail->Password = "password"; // รหัสผ่านของ email ที่ระบุด้านบน $mail->From = $from; // ผู้รับจะเห็นอีเมล์นี้เป็น ผู้ส่งเมล์ $mail->FromName = $from; // ผู้รับจะเห็นชื่อนี้เป็น ชื่อผู้ส่ง $mail->AddAddress($to); $mail->Subject = $subject; $mail->Body = $message; $mail->Send();