ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingขอความช่วยเหลือ PHP ส่งเมลแนบไฟล์ด้วยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ขอความช่วยเหลือ PHP ส่งเมลแนบไฟล์ด้วยครับ  (อ่าน 6350 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
m_manthai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 957



ดูรายละเอียด
« เมื่อ: 29 พฤษภาคม 2012, 21:05:27 »

ขอความช่วยเหลือ PHP ส่งเมลแนบไฟล์ด้วยครับ

โดยไฟล์ที่จะแนบไปคือไฟล์ที่ถูก เจเนอเรตหรือ exprot ขึ้นมาตอนนั้น ไฟล์จะเป็นนามสกุลอะไรก็ได้ เช่น .doc หรือ .rtf จะเป็น pdf ก็ได้แล้วแต่ท่านถนัด

ข้อมูลที่อยู่ในไฟล์ที่ถุกสร้างขึ้น จะเป็นข้อมูลที่อยู่ในตัวแปรครับผม


ในส่วนที่ผมจะทำสุดท้ายนั้นคือ มีช่องข้อความให้ผู้ใช้กรอกข้อมูลเข้ามา จากนั้น php จะนำค่านั้นไปใส่ในไฟล์ที่ที่ถูกสร้างขึ้นมาตอนนั้น แล้ว แนบไปในอีเมลส่งให้เวปมาสเตอร์เลยครับ


ท่านใดพอจะยกตัวอย่าง แต่ เจเนอร์เรตไฟล์ จากข้อมูลในตัวแปรเฉยๆก้ได้ครับ แล้วแนบไปกับเมล

ขอความกรุณาท่านผู้รู้ด้วยครับ ผมมึนมาหลายวันแล้ว


ขอบพระคุณครับ
บันทึกการเข้า
m_manthai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 957



ดูรายละเอียด
« ตอบ #1 เมื่อ: 29 พฤษภาคม 2012, 21:20:24 »

สุดท้ายแล้วผมจะเอาไปประยถต์ทำแบบนี้ครับผม

บันทึกการเข้า
m_manthai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 957



ดูรายละเอียด
« ตอบ #2 เมื่อ: 30 พฤษภาคม 2012, 21:47:32 »

ไปหามาให้ครับ  wanwan020 ==> http://www.thaicreate.com/php/...p-send-email-attach-files.html


กราบขอบพระคุณมากเลยครับผม ที่ช่วยเหลือ  แม้ยังจะไม่ตรงเท่าไหร่ ที่ผมอยากได้ตัวอย่างหรือวิธีคือ สร้างไฟล์ตอนนั้นแล้ว attach ไปเลย

แต่ผมจะพยายามประยุกต์ดูครับผม

ขอบคุณครับ  +1 ให้แล้วนะครับผม
บันทึกการเข้า
Sawat_D
สมุนแก๊งเสียว
*

พลังน้ำใจ: 71
ออฟไลน์ ออฟไลน์

กระทู้: 846



ดูรายละเอียด
« ตอบ #3 เมื่อ: 31 พฤษภาคม 2012, 02:37:40 »

การสร้างไฟล์ .txt ครับ

http://www.thaicreate.com/php/php-write-text-file.html

ลงดูครับน่าจะประยุกต์ใช้ได้ครับ
บันทึกการเข้า

ขายส่งอาหารเสริม
รับออกแบบเว็บไซต์ งานเสร็จค่อยจ่ายเงิน
Tcomputer
สมุนแก๊งเสียว
*

พลังน้ำใจ: 52
ออฟไลน์ ออฟไลน์

กระทู้: 574



ดูรายละเอียด
« ตอบ #4 เมื่อ: 31 พฤษภาคม 2012, 07:38:24 »

อ้างถึง
<form action="<?php echo $PHP_SELF ?>" enctype="multipart/form-data" method="post">
อีเมล์แอดเดรสของผู้ส่ง : <input type="text" name="from"><br>
อีเมล์แอดเดรสของผู้รับ : <input type="text" name="to"><br>
หัวเรื่อง : <input type="text" name="subject"><br>
เนื้อความ : <textarea name="body" rows="3"></textarea><br>
ไฟล์ที่จะแนบ : <input type="file" name="attachment"><br>
<input type="submit" name="send" value="ส่งเมล์">
<input type="reset" value="clear">
</form><hr>
กรุณากรอกรายละเอียดให้ครบทุกช่องนะครับ เพราะโค้ดไม่ได้ดักข้อผิดพลาดไว้

<?php
//ถ้ามีการคลิกปุ่มส่งข้อมูล ให้ดำเนินการส่งเมล์
if ($send) {
  //สร้างเลขสุ่มขึ้นมา เพื่อใช้ในการกำหนดขอบเขตเนื้อหาของเมล์
  $boundary = uniqid("");

  //สร้างข้อมูลในส่วนเฮดเดอร์
  $header = "From: $from\n";
  $header .= "Content-type: multipart/mixed; boundary=\"$boundary\"";

  //กำหนดชนิดของไฟล์ที่แนบมากับอีเมล์
  if ($HTTP_POST_FILES['attachment']['type']) {
    $mimeType = $HTTP_POST_FILES['attachment']['type'];
  }
  else {
    $mimeType = "application/unknown";
  }

  //เก็บชื่อไฟล์ไว้ในตัวแปร $fileName
  $fileName = $HTTP_POST_FILES['attachment']['name'];

  $tmpName = $HTTP_POST_FILES['attachment']['tmp_name'];
  //เปิดไฟล์
  $fp = fopen($tmpName, "r");
 
  //อ่านเนื้อหาของไฟล์เข้ามาเก็บไว้ในตัวแปร $read
  $read = fread($fp, filesize($tmpName));
 
  /* เข้ารหัสไฟล์ที่จะแนบไป พร้อมทั้งปิดท้ายด้วยอักขระขึ้นบรรทัดใหม่ (\n) ซึ่งถือว่าสำคัญมาก มิฉะนั้นโปรแกรมอ่านเมล์จะไม่สามารถเปิดไฟล์ที่แนบไปกับเมล์ได้ */
  $read = base64_encode($read) . "\n";
 
  /* ใช้ฟังก์ชั่น chunk_split() ตัดเนื้อหาของไฟล์ที่เข้ารหัสแล้วออกเป็นหลายๆบรรทัด บรรทัดละไม่เกิน 76 ตัวอักษร (ตามข้อกำหนดของ RFC 2045) */
  $read = chunk_split($read);

  /* สร้างข้อมูลในส่วนเนื้อความ โดยใช้ตัวเลขที่ได้จากฟังก์ชั่น uinqid() เป็นตัวกำหนดขอบเขตของข้อมูล */
  $mbody = "--$boundary\n";
  $mbody .= "Content-type: text/plain; charset=windows-874;\n";
  $mbody .= "Content-transfer-encoding: 8bit\n\n";
  $mbody .= "$body\n";  //เนื้อความของเมล์

  $mbody .= "--$boundary\n";
  $mbody .= "Content-type: $mimeType; name=$fileName\n";
  $mbody .= "Content-disposition: attachment; filename=$fileName\n";
  $mbody .= "Content-transfer-encoding: base64\n\n";
  $mbody .= $read;  //เนื้อหาของไฟล์ที่แนบไปพร้อมกับเมล์
  $mbody .= "--$boundary--";

  //ส่งเมล์
  if (mail($to, $subject, $mbody, $header)) {
    echo "การส่งเมล์สำเร็จ ให้ลองเช็คเมล์ดู";
  }
  else {
    echo "ไม่สามารถส่งเมล์ได้ กรุณาตรวจสอบ";
  }
}
?>

ลองนำไปดัดแปลงเอานะครับผม พอดีผมเอามาจากหนังสือ PHP4 เห็นมีโค๊ตเกี่ยวกับแนบไฟล์ เผื่อพอช่วยได้
บันทึกการเข้า

adidog
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 238
ออฟไลน์ ออฟไลน์

กระทู้: 1,859



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 31 พฤษภาคม 2012, 11:30:05 »

ผมว่าลองทำให้เป็น pdf แล้วค่อยแนบ เด๋วขอลองดูก่อน ถ้าเวิคจะมาบอกครับ Tongue Tongue Tongue
บันทึกการเข้า

Certain Dri Certain Dri
คุณแม่มือใหม่ คุณแม่มือใหม่
m_manthai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 957



ดูรายละเอียด
« ตอบ #6 เมื่อ: 31 พฤษภาคม 2012, 11:33:21 »

ขอบคุณทุกท่านครับ


ผมว่าลองทำให้เป็น pdf แล้วค่อยแนบ เด๋วขอลองดูก่อน ถ้าเวิคจะมาบอกครับ Tongue Tongue Tongue


ขอบพระคุณมากเลยท่านครับ จะไม่ลืมพระคุณเลยครับ ถ้ามีโอกาสจะตอบแทนคุณ Embarrassed
บันทึกการเข้า
adidog
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 238
ออฟไลน์ ออฟไลน์

กระทู้: 1,859



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 31 พฤษภาคม 2012, 13:36:20 »

ลองแล้ว เวิคดีครับ

http://27.254.38.80/~fatsions/tcpdf/

ผมใช้ tcpdf ในการ gen pdf น่ะครับ หาโฟลดเอาใน google

ส่วนเมล์ก็หาพวก phpmailer ก็ได้ครับใช้งานง่ายดีครับ

***เพิ่มเติมโฟลเดอร์ data/ ที่ใช้เก็บไฟล์ต้อง chmod777 ด้วยน่ะครับ เด๋วมันเขียนไฟล์ลงไม่ได้

อันนี้โค้ดตัวอย่างผมครับเขียนสด 555 มั่วได้อีก ไม่เข้าใจตรงไหนลองถามมาถ้าตอบได้ก็จะตอบ ตอบไม่ได้ก็ ตัวใครตัวมันครับ  Shocked Shocked Shocked แต่ผมลองแล้ว ใช้ได้ครับ

โค๊ด:
<?php
$flag 
false;
if(
$_POST){
require_once(&
#39;mail.php&#39;);
require_once(&#39;config/lang/eng.php&#39;);
require_once(&#39;tcpdf.php&#39;);

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATIONPDF_UNITPDF_PAGE_FORMATtrue, &#39;UTF-8&#39;, false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor(&#39;Nicola Asuni&#39;);
$pdf->SetTitle(&#39;TCPDF Example 001&#39;);
$pdf->SetSubject(&#39;TCPDF Tutorial&#39;);
$pdf->SetKeywords(&#39;TCPDF, PDF, example, test, guide&#39;);
$pdf->SetHeaderData(PDF_HEADER_LOGOPDF_HEADER_LOGO_WIDTHPDF_HEADER_TITLE.&#39; 001&#39;, PDF_HEADER_STRING);
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, &#39;&#39;, PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, &#39;&#39;, PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFTPDF_MARGIN_TOPPDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//set auto page breaks
$pdf->SetAutoPageBreak(TRUEPDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->setFontSubsetting(true);
$pdf->SetFont(&#39;freeserif&#39;, &#39;&#39;, 14);//include this for support utf-8 language
$pdf->AddPage();

$html = &#39;<h1> Hi :&#39;.$_POST[&#39;email&#39;].&#39;</h1>&#39;;
$html .= &#39;<p>&#39;;
$html .=&#39;Your Description :&#39;.$_POST[&#39;enquiry&#39;];
$html .=&#39;</p>&#39;;

$pdf->writeHTMLCell($w=0$h=0$x=&#39;&#39;, $y=&#39;&#39;, $html, $border=0, $ln=1, $fill=0, $reseth=true, $align=&#39;&#39;, $autopadding=true);

$filename = &#39;data/file_&#39;.md5(mt_rand()).&#39;.pdf&#39;;//เก็บไฟล์ลงในโฟลเดอร์ data

$pdf->Output($filename, &#39;F&#39;);

$subject = &#39;Message form&#39;.$_POST[&#39;email&#39;];

$mail = new Mail(); 
$mail->protocol = &#39;mail&#39;;
$mail->setTo($_POST[&#39;email&#39;]);
$mail->setFrom($_POST[&#39;email&#39;]);
$mail->setSender(&#39;NoobMan&#39;);
$mail->setSubject(html_entity_decode($subjectENT_QUOTES, &#39;UTF-8&#39;));
$mail->setHtml($html);
$mail->setText(html_entity_decode($textENT_QUOTES, &#39;UTF-8&#39;));
$mail->addAttachment($filename);
$mail->send();
$flag true;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </HEAD>

 <BODY>
 <?php if($flag){?>
 <h1>ส่งข้อความแล้ว</h1>
<p><a href="<?php echo $filename?>">Download file ที่นี่</a></p>
 <?php ?>
 <form name="sendmail" action="index.php" method="post">
 <table>
 <tr>
 <td>
 Your mail:</td><td><input type="text" name="email" size="30" /></td>
 </tr>
 <tr>
 <td>
 Your Description:</td><td><textarea name="enquiry" cols="50" rows="10"></textarea></td>
 <tr>
 <td>
<input type="submit" value="Send" /></td><td></td>
</table>

 </form>
  
 </BODY>
</HTML>

« แก้ไขครั้งสุดท้าย: 31 พฤษภาคม 2012, 13:53:46 โดย adidog » บันทึกการเข้า

Certain Dri Certain Dri
คุณแม่มือใหม่ คุณแม่มือใหม่
vanavat
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 373
ออฟไลน์ ออฟไลน์

กระทู้: 2,752



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 31 พฤษภาคม 2012, 13:45:15 »

แจ่มมากครับผมลองแล้วเยี่มเลยแต่ว่ามันส่งเมลมา4รอบอะครับ
« แก้ไขครั้งสุดท้าย: 31 พฤษภาคม 2012, 13:45:41 โดย vanavat » บันทึกการเข้า

adidog
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 238
ออฟไลน์ ออฟไลน์

กระทู้: 1,859



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 31 พฤษภาคม 2012, 13:50:07 »

แจ่มมากครับผมลองแล้วเยี่มเลยแต่ว่ามันส่งเมลมา4รอบอะครับ

แก้ไขแล้วครับ ตะกี้ ลองให้มันเด่งโหลดไฟล์อัตโนมัติ แต่ไม่เวิค มันติดลูป เลยต้องทำเป็นลิงค์ให้โหลดไฟล์เอาครับ  wanwan020 wanwan020 wanwan020
บันทึกการเข้า

Certain Dri Certain Dri
คุณแม่มือใหม่ คุณแม่มือใหม่
adidog
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 238
ออฟไลน์ ออฟไลน์

กระทู้: 1,859



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 31 พฤษภาคม 2012, 13:55:02 »

ใครถูกใจก็ + ให้ด้วยน่ะครับ(ไม่รู้จะเอาไปทำไม 555)  wanwan004 wanwan004 wanwan004
บันทึกการเข้า

Certain Dri Certain Dri
คุณแม่มือใหม่ คุณแม่มือใหม่
vanavat
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 373
ออฟไลน์ ออฟไลน์

กระทู้: 2,752



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 31 พฤษภาคม 2012, 14:03:35 »

+1 ให้แล้วแต่ก็ยังคิดไม่ออกว่าจะเอาไปทำอะไร  แต่ตอนนี้ อยากได้ formmail ยืนยันการชำระเงินแบบนี้แนบไฟล์ สลิป มีเลือกธนาคาร ทำออกมาเละๆไม่ค่อยเลยมันไม่สวยอะ
« แก้ไขครั้งสุดท้าย: 31 พฤษภาคม 2012, 14:03:49 โดย vanavat » บันทึกการเข้า

m_manthai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 957



ดูรายละเอียด
« ตอบ #12 เมื่อ: 31 พฤษภาคม 2012, 14:57:10 »

ขอบพระคุณมากครับ บวกหนึ่งให้แล้ว เดี๋ยวขอเอาไปลองก่อน แล้วถ้ามีปัญหาคงมารบกวนท่านอีกรอบ  Embarrassed  แต่ก็พยายามช่วยตัวเองครับ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์