Si puedes visualizar los productos con foreach tambien puedes cargar el cuerpo del mail por foreach.. o guardas en una variable los productos que trajiste por foreach y eso lo insertas al cuerpo del mensaje, no se porque tanta vuelta. Algo así, aunque esto está hecho con FOR pero la lógica es la que vale..
Código PHP:
if(isset($_SESSION['carrito'])){
$carrito_mio=$_SESSION['carrito'];
$pedido="Pedido de libros - Prueba. <br><br>" ;
$total=0;
for($i=0;$i<=count($carrito_mio)-1;$i ++){
if($carrito_mio[$i]!= NULL){
$pedido .= $carrito_mio[$i]['nombre_libro'] . "********" . $carrito_mio[$i]['precio'] . "x"
. $carrito_mio[$i]['cantidad'] . "Total : " . $carrito_mio[$i]['precio'] * $carrito_mio[$i]['cantidad'] . " Uss <br> ";
$total = $total + $carrito_mio[$i]['precio'] * $carrito_mio[$i]['cantidad'];
}
}
$pedido .= "<br><br> Total: " . $total;
$nombre=$_POST['nombre'];
$email=$_POST['correo'];
$pedido .= "<br><br>De: ". $nombre;
$asunto="Libros online-pedido prueba";
$empresa="idt.com.py";
$correo_empresa="[email protected]";
mail($email,$asunto,$pedido,"MIME-Version:1.0\nContent-type:text/html;charset=UTF-8\nFrom:$empresa<$correo_empresa>");
$asunto .= " Copia ";
mail($correo_empresa,$asunto,$pedido,"MIME-Version:1.0\nContent-type:text/html;charset=UTF-8\nFrom:$empresa<$correo_empresa>");
}