Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ถึงคุณ @W_IN เกี่ยวกับการส่งเมล์แนบไฟล์ พอมีโค้ดลักษณะนี้ไหม และโค้ดข้างล่างนี้ยังส่งไม่สมบูรณ์



 

ถึงคุณ @W_IN เกี่ยวกับการส่งเมล์แนบไฟล์ พอมีโค้ดลักษณะนี้ไหม และโค้ดข้างล่างนี้ยังส่งไม่สมบูรณ์

 



Topic : 004132

Guest




เกี่ยวกับการส่งเมล์แนบไฟล์ พอมีโค้ดลักษณะนี้ไหม
และโค้ดข้างล่างนี้ยังส่งไม่สมบูรณ์ ช่วยคิดและแก้ไขหน่อยล่ะกันครับ

mailclass.php*****ไฟล์ class

<?php

class mime_mail {
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;

// ??? ???r />
function mime_mail() {
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}

// ? ???? ??????????? ??br />
function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts [] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}

// ??????????ultipart)
function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}

function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
return $multipart.= "--\n";
}

// ????????????????????????br />
function send() {
$mime = "";

if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
if (!empty($this->headers)) $mime .= $this->headers. "\n";
if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
print $this->to."<br>Subject: ".$this->subject."<br>Mime : ".$mime;
mail($this->to, $this->subject, "", $mime);
}
}//end class

?>

sendmail.php *************ไฟล์ sendmail.php
<?php
include("mailclass.php");
$filename="test.txt";

$attachment = fread(fopen($filename, "r"), filesize($filename));

$mail = new mime_mail();
$mail->from = "[email protected]";
$mail->headers ="Errors-To: [[email protected]][email protected][/EMAIL]";
$mail->to = "your@domaincom";
$mail->subject = "PHP attachment";
$mail->body = "Get your file!";
$mail->add_attachment($attachment,$filename, "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG");
$mail->send();
?>



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 26 พ.ค. 2548 11:33:37 By : @xXx View : 2999 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ผมมีฉบับสมบูรณ์อยู่ครับที่เขาทำได้ดีมาก ๆ ครับ แต่ไม่รู้ว่าจะเอาไปใช้เป็นหรือเปล่านะครับ
จะเอาก็มีอีกนะครับ downloads ได้ที่นี่เลยครับ

https://www.thaicreate.com/phpclass.zip



<?php



/***** EXAMPLE **********************************************************************

// Content
$text = 'Success.';
$html = '<HTML><img src="images/admin/logo.gif">'."\r\n".'<FONT FACE="Verdana, Arial" COLOR="#FF0000">'."\r\n".'&nbsp;&nbsp;&nbsp;&nbsp;Success...</FONT>'."\r\n".'<P></BODY></HTML>';

// Create new message
$mail = new email();

// Add images.
$mail->add_html_image('images/admin/logo.gif');

// Add HTML and plain text version. Will replace all occurences of filenames specified with add_html_image() with cid:
$mail->add_html($html, $text);

// Add attachment. Third parameter can specify mime type
$mail->add_attachment($attachment, 'example.zip');

// Send
echo $mail->direct_send('Fisk <[email protected]>', 'Allan <[email protected]>', 'My Subject 1');


// Example of using get_rfc822() to return the entirety of the mail and then attaching it to another mail.

$rfc822_email = $mail->get_rfc822('Fisk <[email protected]>', 'Allan <[email protected]>', 'My Subject 2');

$mail2 = new email('This is an email, that has another email attached.');
$mail2->add_attachment($rfc822_email, 'Forwarded Email', 'message/rfc822');
echo $mail2->direct_send('Fisk <[email protected]>', 'Allan <[email protected]>', 'My Subject 3');

*/






class email
{
var $mime;
var $html;
var $body;
var $do_html;
var $multipart;
var $html_text;
var $html_images;
var $headers;
var $parts;
var $charset;
var $charsetlist;
var $messagebuilt = 0;




/**
* Constructor. Do not set body if sending MIME mail.
*
* @access public
* @param string body Body content of non HTML mails.
*/

function Email($body = false)
{
$this->html_images = array();
$this->headers = array();
$this->parts = array();
$this->charsetlist = array('iso' => 'us-ascii', 'big5' => 'big5', 'gb' => 'gb2312');
$this->set_charset('iso-8859-1', true);
$this->body = $body;
return true;
}






/**
* Change/set additional message header.
*
* Shouldn't really be necessary as you could use the constructor and send functions,
* it's here nonetheless. Takes any number of arguments, which can be either strings
* or arrays full of strings.
*
* @access public
*/

function add_header()
{
$args = func_get_args();
for($i=0; $i<count($args); $i++) {
if (is_array($args[$i])) {
for($j=0; $j<count($args[$i]); $j++) {
if ($args[$i][$j] != '') {
$this->headers[] = $args[$i][$j];
}
}
}
if ($args[$i] != '') {
$this->headers[] = $args[$i];
}
}
return true;
}






/**
* Set the content charset.
*
* @access public
*/

function set_charset($charset = '', $raw = false)
{
if ($raw == true) {
$this->charset= $charset;
return true;
}

if (is_string($charset)) {
while (list($k,$v)= each($this->charsetlist)) {
if ($k == $charset) {
$this->charset = $v;
return true;
}
}
}
return false;
}






/**
* Adds a HTML part to the mail.
*
* Also replaces image names with content-id's.
*
* @access public
* @param string html HTML code to add.
* @param string text Text alternative for non-HTML clients.
* Will be generated from $html if not specified.
*/

function add_html($html, $text = null)
{
// Generate plain text alternative to $html
if (is_null($text)) {
$text = HTML2Text($html);
}

$this->do_html = 1;
$this->html = $html;
$this->html_text = $text;

if (is_array($this->html_images) and count($this->html_images) > 0) {
for($i=0; $i<count($this->html_images); $i++) {
$this->html= str_replace($this->html_images[$i]['name'], 'cid:'.$this->html_images[$i]['cid'], $this->html);
}
}
}







/**
* Add image to the list of embedded images.
*
* @access public
* @param string filename Full path/file name.
*/

function add_html_image($filename)
{
// Read file content
$fp = fopen($filename, 'r');
$file = fread($fp, filesize($filename));
fclose($fp);

// Set MIME type to image/fileext
$c_type = "image/".strtolower(ExtractFileExtention($filename));

// Add
$this->html_images[] = array( 'body' => $file,
'name' => $filename,
'c_type' => $c_type,
'cid' => md5(uniqid(time())) );
}






/**
* Add a file to the list of attachments.
*
* @access public
* @param string file Full path/file name.
* @param string name Display name.
* @param string c_type MIME type.
*/

function add_attachment($file, $name = '', $c_type = 'application/octet-stream')
{
$this->parts[] = array( 'body' => $file,
'name' => $name,
'c_type' => $c_type );
}






/**
* Builds html part of email.
*
* @access private
*/

function build_html($orig_boundary)
{
$sec_boundary= '=_'.md5(uniqid(time()));
$thr_boundary= '=_'.md5(uniqid(time()));

// No images
if (count($this->html_images) == 0) {
$this->multipart .= '--'.$orig_boundary."\n";
$this->multipart .= 'Content-Type: multipart/alternative;'.chr(10).chr(9).'boundary="'.$sec_boundary."\"\n\n\n";

$this->multipart .= '--'.$sec_boundary."\n";
$this->multipart .= 'Content-Type: text/plain; charset="'.$this->charset.'"'."\n";
$this->multipart .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
$this->multipart .= $this->quoted_printable_encode($this->html_text)."\n\n";

$this->multipart .= '--'.$sec_boundary."\n";
$this->multipart .= 'Content-Type: text/html; charset="'.$this->charset.'"'."\n";
$this->multipart .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
$this->multipart .= $this->quoted_printable_encode($this->html)."\n\n";
$this->multipart .= '--'.$sec_boundary."--\n\n";
}

// Images present
else {
$this->multipart .= '--'.$orig_boundary."\n";
$this->multipart .= 'Content-Type: multipart/related;'.chr(10).chr(9).'boundary="'.$sec_boundary."\"\n\n\n";

$this->multipart .= '--'.$sec_boundary."\n";
$this->multipart .= 'Content-Type: multipart/alternative;'.chr(10).chr(9).'boundary="'.$thr_boundary."\"\n\n\n";

$this->multipart .= '--'.$thr_boundary."\n";
$this->multipart .= 'Content-Type: text/plain; charset="'.$this->charset.'"'."\n";
$this->multipart .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
$this->multipart .= $this->quoted_printable_encode($this->html_text)."\n\n";

$this->multipart .= '--'.$thr_boundary."\n";
$this->multipart .= 'Content-Type: text/html'."\n";
$this->multipart .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
$this->multipart .= $this->quoted_printable_encode($this->html)."\n\n";
$this->multipart .= '--'.$thr_boundary."--\n\n";

for($i = 0; $i < count($this->html_images); $i++) {
$this->multipart .= '--'.$sec_boundary."\n";
$this->build_html_image($i);
}

$this->multipart .= "--".$sec_boundary."--\n\n";
}
}






/**
* Build embedded image part of html mail.
*
* @access private
* @param int i Part number.
*/

function build_html_image($i)
{
$this->multipart .= 'Content-Type: ' . $this->html_images[$i]['c_type'];

if ($this->html_images[$i]['name'] != '') {
$this->multipart .= '; name="' . $this->html_images[$i]['name']."\"\n";
}
else {
$this->multipart .= "\n";
}

$this->multipart .= 'Content-Transfer-Encoding: base64'."\n";
$this->multipart .= 'Content-ID: <'.$this->html_images[$i]['cid'].">\n\n";
$this->multipart .= chunk_split(base64_encode($this->html_images[$i]['body']))."\n";
}






/**
* Build single part of multipart message.
*
* @access private
* @param int i Part number.
*/

function build_part($i)
{
$message_part = '';
$message_part .= 'Content-Type: '.$this->parts[$i]['c_type'];
if ($this->parts[$i]['name'] != '') {
$message_part .= '; name="'.$this->parts[$i]['name']."\"\n";
}
else {
$message_part .= "\n";
}

// Determine content encoding.
if ($this->parts[$i]['c_type'] == 'text/plain') {
$message_part .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
$message_part .= $this->quoted_printable_encode($this->parts[$i]['body'])."\n";
}
elseif ($this->parts[$i]['c_type'] == 'message/rfc822') {
$message_part .= 'Content-Transfer-Encoding: 7bit'."\n\n";
$message_part .= $this->parts[$i]['body']."\n";
}
else {
$message_part .= 'Content-Transfer-Encoding: base64'."\n";
$message_part .= 'Content-Disposition: attachment; filename="'.$this->parts[$i]['name']."\"\n\n";
$message_part .= chunk_split(base64_encode($this->parts[$i]['body']))."\n";
}

return $message_part;
}






/**
* Builds the multipart message from the list ($this->_parts).
*
* @access private
*/

function build_message()
{
$this->messagebuilt = 1;

$boundary = '=_'.md5(uniqid(time()));

$this->headers[] = 'MIME-Version: 1.0';
$this->headers[] = 'Content-Type: multipart/mixed;'.chr(10).chr(9).'boundary="'.$boundary.'"';
$this->multipart = "This is a MIME encoded message.\n\n";

if (isset($this->do_html) AND $this->do_html == 1) {
$this->build_html($boundary);
}

if (isset($this->body) AND $this->body != '') {
$this->parts[] = array('body' => $this->body, 'name' => '', 'c_type' => 'text/plain');
}

for($i=(count($this->parts)-1); $i>=0; $i--) {
$this->multipart .= '--'.$boundary."\n".$this->build_part($i);
}

$this->mime = $this->multipart."--".$boundary."--\n";
}






/**
* Sends message to one recipient with sendmail.
*
* @access public
* @param string from Sender - e.g. Allan Hansen <[email protected]>
* @param string to Recipient - e.g. Allan Hansen <[email protected]>
* @param string subject Mail subject.
* @param string headers Additional headers to this message only.
*/

function send($from, $to, $subject = '', $headers = '')
{
// Build message
if (!$this->messagebuilt) {
$this->build_message();
}

// Make header
$Headers = trim("From: $from\n".implode("\n", $this->headers)."\n$headers");

// Extract to e-mail address.
if (ereg("^(.*)<(.*)>", $to, $regs)) {
$to_e = $regs[2];
}
else {
$to_e = $to;
}

// Extract from e-mail address. Pass to sendmail -f to set Return-Path
if (ereg("^(.*)<(.*)>", $from, $regs)) {
$from_e = $regs[2];
}
else {
$from_e = $from;
}

// Send
mail($to_e, $subject, $this->mime, $Headers, "-f$from_e");
}







/**
* Sends message to one recipient direct SMTP connection.
*
* Requires PEAR.
*
* @access public
* @param string from Sender - e.g. Allan Hansen <[email protected]>
* @param string to Recipient - e.g. Allan Hansen <[email protected]>
* @param string subject Mail subject.
* @param string headers Additional headers to this message only.
*/

function direct_send($from, $to, $subject= '', $headers= '')
{
// Build message
if (!$this->messagebuilt) {
$this->build_message();
}

// Make header
if (!strstr($headers, "To: ")) {
$Headers = "To: $to\n";
}
$Headers .= trim("From: $from\nSubject: $subject\n".implode("\n", $this->headers)."\n$headers");

// Extract to e-mail address.
if (ereg("^(.*)<(.*)>", $to, $regs)) {
$to_e = $regs[2];
}
else {
$to_e = $to;
}

// Extract frome-mail address.
if (ereg("^(.*)<(.*)>", $from, $regs)) {
$from_e = $regs[2];
}
else {
$from_e = $from;
}

// Include PEAR code
require_once "Net/SMTP.php";

// Get mail server
list(,$domain)= explode("@", $to_e);
if (!getmxrr($domain, $mx)) {
return "No MX Record";
}

// Initiate connection
$n = new Net_SMTP($mx[0], 25, trim(`hostname`));
$err = $n->connect();
if (PEAR::isError($err)) {
return "Connect: ".$err->getMessage();
}

// Send from
$err = $n->mailFrom($from_e);
if (PEAR::isError($err)) {
return "From: ".$err->getMessage();
}

// Send rcptTo
$err = $n->rcptTo($to_e);
if (PEAR::isError($err)) {
return "To: ".$err->getMessage();
}

// Send message
$err = $n->data("$Headers\n\n".$this->mime);
if (PEAR::isError($err)) {
return "Data: ".$err->getMessage();
}

// Disconnect
$err = $n->disconnect();
if (PEAR::isError($err)) {
return "Disconnect: ".$err->getMessage();
}

return "ok";
}






/**
* Use this method to return the email in message/rfc822 format.
* Useful for adding an email to another email as an attachment.
* There's a commented out example at the top of this file.
*
* @access public
* @param string from Sender - e.g. Allan Hansen <[email protected]>
* @param string to Recipient - e.g. Allan Hansen <[email protected]>
* @param string subject Mail subject.
* @param string headers Additional headers to this message only.
*/

function get_rfc822($to, $from, $subject= '', $headers= '')
{
// Build message
if (!$this->messagebuilt) {
$this->build_message();
}

// Make up the date header as according to RFC822
$date = 'Date: '.date('D, d M y H:i:s');

if (is_string($subject)) {
$subject = 'Subject: '.$subject;
}

if (is_string($headers)) {
$headers = explode("\n", trim($headers));
}

for ($i = 0; $i < count($headers); $i++) {
if (is_array($headers[$i])) {
for($j = 0; $j < count($headers[$i]); $j++) {
if ($headers[$i][$j] != '') {
$xtra_headers[] = $headers[$i][$j];
}
}
}
if ($headers[$i] != '') {
$xtra_headers[] = $headers[$i];
}
}

if (!isset($xtra_headers)) {
$xtra_headers = array();
}

return $date."\n".$from."\n".$to."\n".$subject."\n".implode("\n", $this->headers)."\n".implode("\n", $xtra_headers)."\n\n".$this->mime;
}







/**
* Encode string with quoted_printable.
*
* Function found at http://www.php.net/manual/en/function.quoted-printable-decode.php
* No further comments.
*/

function quoted_printable_encode($input, $line_max = 76)
{
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "\r\n";
$escape = "=";
$output = "";

while( list(, $line) = each($lines) ) {
//$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary
$linlen = strlen($line);
$newline = "";
for ($i = 0; $i < $linlen; $i++) {
$c = substr($line, $i, 1);
$dec = ord($c);
if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only
$c = "=20";
}
elseif (($dec == 61) || ($dec < 32 ) || ($dec > 126)) { // always encode "\t", which is *not* required
$h2 = floor($dec/16); $h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"];
}
if ((strlen($newline) + strlen($c)) >= $line_max) { // CRLF is not counted
$output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
$newline = "";
}
$newline .= $c;
} // end of for
$output .= $newline.$eol;
}

return trim($output);
}

}





/**
* Mail queue for sending several mails after page sent to browser.
*/

class mail_queue
{


// private variables
var $queue;






/**
* Constructor - initialize
*/

function mail_queue()
{
$this->queue = array ();

// remove after PHP5
register_shutdown_function(array($this, "__destruct"));
}





/**
* Destructor - send mails
*/

function __destruct()
{
// flush output to browser
print "\n\n";
flush();

// ignore user pressing <esc>
ignore_user_abort(1);

// remove after PHP5
if (isset($GLOBALS["MAILQUEUE"])) {
$this->queue = $GLOBALS["MAILQUEUE"];
}

// send messages
foreach ($this->queue as $row) {

// extract values
list($body, $subject, $to, $from) = $row;

// generate mail
$e = new Email($body);

// send
if (ValidateEmail($to)) {
$e->send($from, $to, $subject);
}
}

// remove after PHP5
$GLOBALS["MAILQUEUE"] = array ();
}






/**
* Queue message for delivery
*
* @param string body Message body
* @param string subject Message subject
* @param string to Recipient - single address only
* @param string from From: Sender <[email protected]>
* @access public
*/

function queue($body, $subject, $to, $from)
{
array_push($this->queue, array($body, $subject, $to, $from));

// remove after PHP5
$GLOBALS["MAILQUEUE"] = $this->queue;
}





}
?>







Date : 26 พ.ค. 2548 16:58:06 By : @W_IN
 


 

No. 2

Guest


ขอบคุณ .....คุณ @W_IN มากๆครับ
Date : 27 พ.ค. 2548 08:41:50 By : @xXx
 

 

No. 3

Guest


// Include PEAR code
require_once "Net/SMTP.php";

เรียกใช้ไฟล์อะไรเหรอครับ มันแจ้ง error ตรงบรรทัดนี้ แล้วไฟล์นี้อยู่ไหนครับ
Date : 27 พ.ค. 2548 09:08:40 By : @xXx
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถึงคุณ @W_IN เกี่ยวกับการส่งเมล์แนบไฟล์ พอมีโค้ดลักษณะนี้ไหม และโค้ดข้างล่างนี้ยังส่งไม่สมบูรณ์
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่