function ส่งเมลล์แบบแนบหลายๆไฟล์ ไม่ได้ครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

ธิษณะ

function ส่งเมลล์แบบแนบหลายๆไฟล์ ไม่ได้ครับ

Post by ธิษณะ »

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

Code: Select all

<?
	$txtname=$_POST[txtname];
	$txtlastname=$_POST[txtlastname];
	$sex=$_POST[sex];
	$posmenu=$_POST[posmenu];
	$txtemail1="ติดต่อทาง pm";
	$txtemail=$_POST[txtemail];
	
	// check male or female
	if ($sex=="Male") {
		$radiosex = "ชาย";
	}else{
		$radiosex = "หญิง";
		}
	// check job postion
	switch ($posmenu) {
		case "02":
   		 	$listposmenu= "ช่างเชื่อม";
   			 break;
		case "03":
  		  	$listposmenu= "เจ้าหน้าที่ฝ่ายบุคคล";
  		  	break;
		case "04":
   		 	$listposmenu= "พนักงานจัดซื้อ";
   		 	break;
		case "05":
  		  	$listposmenu= "พนักงานบัญชี";
  		  	break;
		case "06":
   		 	$listposmenu= "พนักงานขับรถ";
   		 	break;
		}

	// array with filenames to be sent as attachment
//$files = array("file_1.ext","file_2.ext","file_3.ext");
$files = count($_FILES['upfile']['name']);
[color=#BF00BF]// code ช่วงนี้เป็นช่วงที่รับไฟล์แนบจากหน้าเว็บก่อนหน้านี้มาครับ[/color]

// email fields: to, from, subject, and so on
$to = "PM.com";
$to .= "Cc: $txtemail1\n";
$from = "$txtemail"; 
$subject ="ติดต่อเรื่องสมัครงาน";
$headers = "From: $from";
$message = "ติดต่อเรื่องสมัครงาน <br />";
$message = "ชื่อผู้สมัคร :: $txtname <br />";
$message .= "นามสกุลผู้สมัคร :: $txtlastname <br />";
$message .= "เพศ :: $radiosex <br />";
$message .= "ตำแน่งที่สมัคร :: $listposmenu";

 
// boundary 
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
 
// headers for attachment 
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 
 
// multipart boundary 
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 
$message .= "--{$mime_boundary}\n";
 
// preparing attachments
//for($x=0;$x<count($files);$x++){
	for($x=0;$x<($files);$x++){	
		if ($files[$x]!=""){
	$file = fopen($files[$x],"rb");
	$data = fread($file,filesize($files[$x]));
	fclose($file);
	$data = chunk_split(base64_encode($data));
	$message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . 
	"Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" . 
	"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
	$message .= "--{$mime_boundary}\n";
		}//end if
}
 
// send
 
$ok = mail($to, $subject, $message, $headers); 
if ($ok) { 
	echo "<p>mail sent to $to!</p>"; 
} else { 
	echo "<p>mail could not be sent!</p>"; 
} 
?>
ธิษณะ

Re: function ส่งเมลล์แบบแนบหลายๆไฟล์ ไม่ได้ครับ

Post by ธิษณะ »

ธิษณะ wrote:คือผมต้องการทำหน้าเว็บให้ผู้ใช้ใส่ข้อมูลสมัครงาน และให้มีการแนบไฟล์หลายๆไฟล์ครับ เช่น รูปถ่าย ใบจบการศึกษา หรือใบผ่านงาน อะไรทำนองนี้แหละครับ แต่ไม่ต้องการจัดเก็บลง db ต้องการให้ส่งเข้าเมลล์ของฝ่ายบุคคลเลยครับ ไม่เข้าใจว่าต้องทำอย่างไรในการให้แนบไฟล์ได้หลายไฟล์ ผมลองทำตาม code ด้านล่างที่ได้มาจากเว็บอื่นๆ แล้วนำมาแปลงก็ยังไม่ได้ครับ รบกวนท่านที่ชำนาญช่วยแนะนำด้วยครับว่าต้องแก้อย่างไร

Code: Select all

<?
	$txtname=$_POST[txtname];
	$txtlastname=$_POST[txtlastname];
	$sex=$_POST[sex];
	$posmenu=$_POST[posmenu];
	$txtemail1="ติดต่อทาง pm";
	$txtemail=$_POST[txtemail];
	
	// check male or female
	if ($sex=="Male") {
		$radiosex = "ชาย";
	}else{
		$radiosex = "หญิง";
		}
	// check job postion
	switch ($posmenu) {
		case "02":
   		 	$listposmenu= "ช่างเชื่อม";
   			 break;
		case "03":
  		  	$listposmenu= "เจ้าหน้าที่ฝ่ายบุคคล";
  		  	break;
		case "04":
   		 	$listposmenu= "พนักงานจัดซื้อ";
   		 	break;
		case "05":
  		  	$listposmenu= "พนักงานบัญชี";
  		  	break;
		case "06":
   		 	$listposmenu= "พนักงานขับรถ";
   		 	break;
		}

	// array with filenames to be sent as attachment
//$files = array("file_1.ext","file_2.ext","file_3.ext");
$files = count($_FILES['upfile']['name']);
[color=#BF00BF]// code ช่วงนี้เป็นช่วงที่รับไฟล์แนบจากหน้าเว็บก่อนหน้านี้มาครับ[/color]

// email fields: to, from, subject, and so on
$to = "PM.com";
$to .= "Cc: $txtemail1\n";
$from = "$txtemail"; 
$subject ="ติดต่อเรื่องสมัครงาน";
$headers = "From: $from";
$message = "ติดต่อเรื่องสมัครงาน <br />";
$message = "ชื่อผู้สมัคร :: $txtname <br />";
$message .= "นามสกุลผู้สมัคร :: $txtlastname <br />";
$message .= "เพศ :: $radiosex <br />";
$message .= "ตำแน่งที่สมัคร :: $listposmenu";

 
// boundary 
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
 
// headers for attachment 
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 
 
// multipart boundary 
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 
$message .= "--{$mime_boundary}\n";
 
// preparing attachments
//for($x=0;$x<count($files);$x++){
	for($x=0;$x<($files);$x++){	
		if ($files[$x]!=""){
	$file = fopen($files[$x],"rb");
	$data = fread($file,filesize($files[$x]));
	fclose($file);
	$data = chunk_split(base64_encode($data));
	$message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . 
	"Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" . 
	"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
	$message .= "--{$mime_boundary}\n";
		}//end if
}
 
// send
 
$ok = mail($to, $subject, $message, $headers); 
if ($ok) { 
	echo "<p>mail sent to $to!</p>"; 
} else { 
	echo "<p>mail could not be sent!</p>"; 
} 
?>
ผมลืมไปครับ ในส่วนของ fileupload ก่อนหน้าที่จะส่งมาให้ code ด้านบน ผมทำเป็น array ไว้ครับ คือ upfile[] มี 3 ช่องให้ผู้สมัครส่งเอกสารสมัครมาครับ

Code: Select all

.......
<tr>
            <td>รูปถ่ายผู้สมัคร</td>
            <td><label for="fileField"></label>
            <input name="upfile[]" type="file" id="fileupload1" size="50" style="border:#03F solid 1px" /></td>
          </tr>
          <tr>
            <td>ใบจบการศึกษา</td>
            <td><input name="upfile[]" type="file" id="fileupload1" size="50" style="border:#03F solid 1px" /></td>
          </tr>
          <tr>
            <td>ใบผ่านงาน(ถ้ามี)</td>
            <td><input name="upfile[]" type="file" id="fileupload1" size="50" style="border:#03F solid 1px" /></td>
          </tr>
.....
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 12 guests