Jump to content

mail(...) function -> sending a binary file


Recommended Posts

I have done this with text file before but I can't gt it to work with a binary file.

 

I am trying to send a .xls file and this is what I am getting when I open up the file attachment in MS Excel:

 

UEsDBBQAAAAIACtT8ERHkkSyWAEAAPAEAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbK2UTU7DMBCF 95wi8hYlblkghJp2QWEJlSgHMPakserYlmf6d3smaQsIiUDVbmJF9nvf+Hns0WTbuGwNCW3wpRgW A5GB18FYvyjF2/wpvxMZkvJGueChFDtAMRlfjea7CJix2GMpaqJ4LyXqGhqFRYjgeaYKqVHEv2kh o9JLtQB5MxjcSh08gaecWg8xHr0wP1kD2UwlelYNY+TWSWI32H+HBfuJ7GEvbNmlUDE6qxVx4XLt zQ9qHqrKajBBrxqWFJ3NdesifwUi7Rzg2SiMCZTBGoAaV+xNj+QpVGrlKHvcsvs+8wQOT+MdwixY 2a3B2sY+Qv+GftetzwyC9dOkNtxKPaFvQlq+h7C8dOztWDTK+r5DZ/EshYiSUWcXAG1yBkwe2RIS 2a9j72XrkOB0+LEJWvU/iYe0u2hQdsPwwrF/+v911WqVwLxS4ua4+I377n2sQ3YP1vgDUEsDBBQA AAAIACtT8EQXtjc46QAAAEsCAAALAAAAX3JlbHMvLnJlbHOtks1qwzAMgO97CqN7o7SFMUadXsqg tzKyB9Bs5YcklrG9LX37eYexBbrSw46WpU+fhHb7eRrVO4fYi9OwLkpQ7IzY3rUaXuqn1QOomMhZ GsWxhjNH2Fd3u2ceKeWa2PU+qgxxUUOXkn9EjKbjiWIhnl3+aSRMlPIztOjJDNQybsryHsNvBlQL pjpaDeFot6Dqs+db2NI0veGDmLeJXbrQAnlO7CzblQ+5PqQ+D6NqCi0nDVbMKYcjkvdFRgNeNtrc bvT3tDhxIkuJ0Ejg6z5fGdeE1v+5omXGj8084oeE4VVk+HbBxQ1Un1BLAwQUAAAACAArU/BEhCSx VukAAAC5AgAAGgAAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzrZLBasMwEETv/Qqx91p2Wkop

kXMpgVxb9wOEtLZMbEloN23991UbSBwIoQefxKzYmcdI6833OIhPTNQHr6AqShDoTbC97xR8NNv7

 

Here is my code:

							$strEmailBody = "<html><body><table border="0" width="800px" cellspacing="0" cellpadding="0">".											"	<tr>".											"		<td width="25%" rowspan="5" valign="middle" style="border-style:solid;border-width:thin;border-color:#000000;">".											"		<p align="right"><b>BILLING DETAILS:</b></td>".											"		<td colspan="3" style="border-style:solid solid none none;border-width:thin;border-color:#000000;padding-left:5px;" align="left">".$_SESSION["GivenNames"]." ".$_SESSION["Surname"]."</td>".											"	</tr>".											"	<tr>".											"		<td colspan="3" style="border-style:none solid none none;border-width:thin;border-color:#000000;padding-left:5px;" align="left">".$_SESSION["Address"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" align="right">".											"		<b>Phone:</b></td>".											"		<td colspan="2" style="border-style:none solid none none;border-width:thin;border-color:#000000;" align="left">".$_SESSION["Phone"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" align="right">".											"		<b>Mobile:</b></td>".											"		<td colspan="2" style="border-style:none solid none none;border-width:thin;border-color:#000000;" align="left">".$_SESSION["Mobile"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" align="right" style="border-style:none none solid none;border-width:thin;border-color:#000000;">".											"		<b>Email:</b></td>".											"		<td colspan="2" style="border-style:none solid solid none;border-width:thin;border-color:#000000;" align="left">".$_SESSION["Email"]."</td>".											"	</tr>".											"</table>".											"<br>".											"<table border="0" width="800px" cellspacing="0" cellpadding="0">".											"	<tr>".											"		<td width="25%" rowspan="5" align="right" valign="middle" style="border-style:solid;border-width:thin;border-color:#000000;">".											"		<b>DELIVERY DETAILS:</b></td>".											"		<td colspan="3" style="border-style:solid solid none none;border-width:thin;border-color:#000000;padding-left:5px;" align="left">".$_SESSION["RecGivenNames"]." ".$_SESSION["RecSurname"]."</td>".											"	</tr>".											"	<tr>".											"		<td colspan="3" style="border-style:none solid none none;border-width:thin;border-color:#000000;padding-left:5px;" align="left">".$_SESSION["RecAddress"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" align="right">".											"		<b>Phone:</b></td>".											"		<td colspan="2" style="border-style:none solid none none;border-width:thin;border-color:#000000;" align="left">".$_SESSION["RecPhone"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" height="24" align="right">".											"		<b>Mobile:</b></td>".											"		<td colspan="2" style="border-style:none solid none none;border-width:thin;border-color:#000000;" height="24" align="left">".$_SESSION["RecMobile"]."</td>".											"	</tr>".											"	<tr>".											"		<td width="9%" align="right" style="border-style:none none solid none;border-width:thin;border-color:#000000;">".											"		<b>Email:</b></td>".											"		<td colspan="2" style="border-style:none solid solid none;border-width:thin;border-color:#000000;" align="left">".$_SESSION["RecEmail"]."</td>".											"	</tr>".											"</table>".											"<br>".											"<table border="0" width="800px" cellspacing="0" cellpadding="0" bordercolor="#000000">".											"	<tr>".											"		<td width="49%" align="left" style="border-style:solid none solid solid;border-width:thin;border-color:#000000;"><b>ITEM DESCRIPTION</b></td>".											"		<td width="17%" align="right" style="border-style:solid none solid solid;border-width:thin;border-color:#000000;">".											"		<b>UNIT PRICE</b></td>".											"		<td width="17%" align="right" style="border-style:solid none solid solid;border-width:thin;border-color:#000000;">".											"		<b>QUANTITY</b></td>".											"		<td width="17%" align="right" style="border-style:solid solid solid solid;border-width:thin;border-color:#000000;">".											"		<b>SUB_TOTAL</b></td>".											"	</tr>".							$fTotal = 0;													for ($nI = 0; $nI < count($_SESSION["arrayShoppingCart"]); $nI++)							{								$arrayCartItem = $_SESSION["arrayShoppingCart"][$nI];															$nCategoryIndex = $arrayCartItem["CategoryIndex"];								$strCategory = $_SESSION["arrayCategories"][$nCategoryIndex][0];								$nInventoryIndex = $arrayCartItem["ItemIndex"];								$arrayInventoryItem = $_SESSION["arrayInventory"][$strCategory][$nInventoryIndex];								$strEmailBody .= "	<tr>".												 "		<td width="44%" style="border-style:none none none solid;border-width:thin;border-color:#000000;">".$arrayInventoryItem["Description"]."</td>".												 "		<td width="16%" align="right" style="border-style:none none none solid;border-width:thin;border-color:#000000;">".sprintf("$%.2f", $arrayInventoryItem["Price"])."</td>".												 "		<td width="16%" align="right" style="border-style:none none none solid;border-width:thin;border-color:#000000;">".$arrayCartItem["Quantity"]."</td>".												 "		<td width="16%" align="right" style="border-style:none solid none solid;border-width:thin;border-color:#000000;">".sprintf("$%.2f", $arrayInventoryItem["Price"] * $arrayCartItem["Quantity"])."</td>".												 "	</tr>";												$fTotal += $arrayInventoryItem["Price"] * $arrayCartItem["Quantity"];						   	}										   	$strEmailBody .= "	<tr>".											 "		<td width="76%" align="right" colspan="3" style="border-style:solid solid none solid;border-width:thin;border-color:#000000;">".											 "		<b>SUB-TOTAL</b></td>".											 "		<td width="16%" align="right" style="border-style:solid solid none solid;border-width:thin;border-color:#000000;">".sprintf("$%.2f", $fTotal)."</td>".											 "	</tr>".											 "	<tr>".											 "		<td width="76%" align="right" colspan="3"  style="border-style:solid solid none solid;border-width:thin;border-color:#000000;">".											 "		<b>POSTAGE & HANDLING</b></td>".											 "		<td width="16%" align="right"  style="border-style:solid solid none solid;border-width:thin;border-color:#000000;">".sprintf("$%.2f", $_SESSION["PostageHandling"])."</td>".											 "	</tr>".											 "	<tr>".											 "		<td width="76%" colspan="3" align="right"  style="border-style:solid solid solid solid;border-width:thin;border-color:#000000;"><b>TOTAL</b></td>".											 "		<td width="16%" align="right"  style="border-style:solid solid solid none;border-width:thin;border-color:#000000;">".sprintf("$%.2f", $fTotal + $_SESSION["PostageHandling"])."</td>".											 "	</tr>".											 "</table></body></html>";							mail($_SESSION["BusinessEmail"], "Order from ".$_SESSION["BusinessName"], $strEmailBody, getHeader($strEmailBody));						}

Function getHeader(...)

						function getHeader($strEmailBody)						{							// Get a random 32 bit number using time() as seed.							$nRandNum = md5(uniqid(time()));														$strEmailHeader = "From: ".$_SESSION["GivenNames"]." ".$_SESSION["Surname"]." <".$_SESSION["Email"].">rn";							$strEmailHeader .= "Reply-To: ".$_SESSION["Email"]."rn";							$strEmailHeader .= "MIME-Version: 1.0rn";							$strEmailHeader .= "Content-Type: multipart/mixed; boundary="".$nRandNum.""rnrn";							$strEmailHeader .= "This is a multi-part message in MIME format.rn";							$strEmailHeader .= "--".$nRandNum."rn";							$strEmailHeader .= "Content-type:text/html; charset=UTF-8rn";							$strEmailHeader .= $strEmailBody."rnrn";							$strEmailHeader .= "--".$nRandNum."rn";							$strEmailHeader .= "Content-Type: application/octet-stream; name="Invoice.xlsx"rn"; // use different content types here							$strEmailHeader .= "Content-Transfer-Encoding: 7bitrn";							$strEmailHeader .= "Content-Disposition: attachment; filename="Invoice.xls"rnrn";							$strEmailHeader .= getInvFileData($_SESSION["Surname"])."rnrn";							$strEmailHeader .= "--".$nRandNum."--";														return $strEmailHeader;						}

Function getInvFileData(...)

						function getInvFileData($strSurname)						{							$strInvFileName = "Invoice_".$strSurname.".xls";							echo "/*";							if (copy("BlankInvoice.xls", $strInvFileName))							{								echo "*/r";																try 								{									$objPHPExcel = PHPExcel_IOFactory::load($strInvFileName);									$objPHPExcel->setActiveSheetIndexByName("Invoice");												} 								catch(Exception $e) 								{									die('Error loading file "'.pathinfo($strInvFileName, PATHINFO_BASENAME).'": '.$e->getMessage());								}								addInvDetails($objPHPExcel->getActiveSheet());							    $objPHPExcelWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");							    $objPHPExcelWriter->save($strInvFileName);							    								$_SESSION["BUFFER"] = file_get_contents($strInvFileName);								$_SESSION["BUFFER_SIZE"] = filesize($strInvFileName);							    							    //unlink($strInvFileName);							}							else							{								echo "*/r";								echo "document.write("<p><font size='10'>ERROR: 'BlankInvoice.xls' could not be found...</font></p><br>");r";							}							return chunk_split(base64_encode($_SESSION["BUFFER"]));						}

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...