Hi All! I' experience a small BIG problem! I have a ecommerce site in PHP with a shopping cart. After the client add the products and fill the data necessary to place the order he must hit the button "send" (page "encomendar.php"). This is a simple mail form. He is then redirect to a page (page "formulario.php") saying that the data was sucessflly send. The problem is that sometimes this mail don't arrive. The client have a print with the page showing that the mail was sucessfly send!? But no email. This happens sometimes, so I think it migth be a server problem or so. MY question here is this: Is there any better way of garantee that the email is send? Perhaps a database log with the send mails? backup all emails? code that retest the email send? Other? Thanks in advance for the comments! António formulario.php ---------------------------------------------------------------------------------------- <?php require_once('Connections/medical.php'); ?> <? session_start(); ?> <html> <head> <title>Formulário</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="Javascript1.2"> <!-- var message = "imprimir esta página"; function printpage() { window.print(); } //document.write("<form><input type=button " //+"value=\""+message+"\" onClick=\"printpage()\"></form>"); //--> function MM_callJS(jsStr) { //v2.0 return eval(jsStr) } //--> </script> <link href="images/medical.css" rel="stylesheet" type="text/css"> <style type="text/css"> <!-- .style1 { font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; } --> </style></head> <body> <table width="500" border="0" cellspacing="8" cellpadding="0"> <tr> <td colspan="2"><img src="images/bannerFundomedicalEnvio.gif" width="500" height="90"></td> </tr> <tr> <td><a href="#" class="linkc style1" onClick="MM_callJS('printpage()')">Imprimir</a></td> <td valign="bottom" class="texto"><div align="right"><a href="index.php" class="linkc"><<Home</a></div></td> </tr> <tr> <td height="2" colspan="2" valign="bottom"></td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td colspan="2"><?php include("db.php"); $error = false; $data = date("d-m-Y,G:i"); $to = "test@test.com"; // $nr = $_POST['nr']; $name = $_POST['nome']; $endereco = $_POST['end']; $localidade = $_POST['loc']; $cod_postal = $_POST['cod']; $pais = $_POST['pais']; $telefone = $_POST['tel']; $fax = $_POST['fax']; $profissao = $_POST['prof']; $actividade = $_POST['act']; $email = $_POST['mail']; $nrcont = $_POST['nrcont']; $sub = "Encomenda"; $msg = $_POST['msg']; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $headers .= "Dados do Cliente referente a xxxx online"; //$EmailBody = "Nome: $name\nO Email: $email\nTelefone: $telefone\nEmpresa: $empresa\nMenssagem: $msg\n"; /* //verifica se o utilizador inseriu um email e se este está num formato errado if(!empty($email) and !ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z­]{2,3})$", $email)) { echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5>O Email que foi inserido não tem um formato valido, por favor insira um email valido</h5></font></div>"; echo "<div align='center'><font color='#FF0000' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><a href='encomendar.php'>Clique aqui para corrigir</a></h5></font></div>"; //echo " <meta http-equiv=\"refresh\" content=\"5;URL=encomendar.php\"> "; //exit; } // */ //verifica se o utilizador colocou um código de cliente e se está errado imprime uma mensagem de erro if(!empty($nr)){ $_SESSION['nr'] = htmlentities( $_POST['nr'] ); $_SESSION['nome'] = htmlentities( $_POST['nome'] ); $_SESSION['end'] = htmlentities( $_POST['end'] ); $_SESSION['loc'] = htmlentities( $_POST['loc'] ); $_SESSION['cod'] = htmlentities( $_POST['cod'] ); $_SESSION['pais'] = htmlentities( $_POST['pais'] ); $_SESSION['tel'] = htmlentities( $_POST['tel'] ); $_SESSION['fax'] = htmlentities( $_POST['fax'] ); $_SESSION['prof'] = htmlentities( $_POST['prof'] ); $_SESSION['act'] = htmlentities( $_POST['act'] ); $_SESSION['mail'] = htmlentities( $_POST['mail'] ); $_SESSION['nrcont'] = htmlentities( $_POST['nrcont'] ); $_SESSION['msg'] = htmlentities( $_POST['msg'] ); $valid_cod = ereg("([a-zA-Z0-9]{8})",$nr); if(empty($name) || empty($telefone)){ echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5>Não preencheu os respectivos campos obrigatórios de um cliente (nome e telefone).</h5></font></div>"; echo "<div align='center'><font color='#FF0000' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><a href='encomendar.php'>Clique aqui para corrigir</a></h5></font></div>"; //echo " <meta http-equiv=\"refresh\" content=\"5;URL=encomendar.php\"> "; // exit; } else if (!$valid_cod){ echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5> O código de cliente não tem um formato valido.<br> Por favor insira-o correctamente!</h5></font></div>"; echo "<div align='center'><font color='#FF0000' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><a href='encomendar.php'>Clique aqui para corrigir</a></h5></font></div>"; //echo " <meta http-equiv=\"refresh\" content=\"5;URL=encomendar.php\"> "; // exit; } else { echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><strong><i>Obrigado ".$name." os seus dados foram enviados com sucesso</i></strong></h5></font></div>"; // print"<input alt=imprimir align='right' border=0 name=submit src='images/print.jpg' type=image onClick='printpage()'><br>"; $mesage=msn($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data); mailbody($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data); mail($to, $sub, $mesage, $headers); $qrydrop = mysql_query("select * from cart where cookieId = '" . GetCartId() . "' order by cod asc"); while($campos = mysql_fetch_array($qrydrop)) { @mysql_query("delete from cart where cookieId = '" . GetCartId() . "' "); } $_SESSION['nr'] = ''; $_SESSION['nome'] =''; $_SESSION['end'] = ''; $_SESSION['loc'] = ''; $_SESSION['cod'] = ''; $_SESSION['pais'] = ''; $_SESSION['tel'] = ''; $_SESSION['fax'] = ''; $_SESSION['prof'] = ''; $_SESSION['act'] = ''; $_SESSION['mail'] = ''; $_SESSION['nrcont'] = ''; $_SESSION['msg'] = ''; // exit; } } // else if (empty($name) || empty($endereco) || empty($localidade) || empty($cod_postal) || empty($pais) || empty($telefone) || empty($nrcont)) { $_SESSION['nr'] = htmlentities( $_POST['nr'] ); $_SESSION['nome'] = htmlentities( $_POST['nome'] ); $_SESSION['end'] = htmlentities( $_POST['end'] ); $_SESSION['loc'] = htmlentities( $_POST['loc'] ); $_SESSION['cod'] = htmlentities( $_POST['cod'] ); $_SESSION['pais'] = htmlentities( $_POST['pais'] ); $_SESSION['tel'] = htmlentities( $_POST['tel'] ); $_SESSION['fax'] = htmlentities( $_POST['fax'] ); $_SESSION['prof'] = htmlentities( $_POST['prof'] ); $_SESSION['act'] = htmlentities( $_POST['act'] ); $_SESSION['mail'] = htmlentities( $_POST['mail'] ); $_SESSION['nrcont'] = htmlentities( $_POST['nrcont'] ); $_SESSION['msg'] = htmlentities( $_POST['msg'] ); echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5>Não preencheu todos os campos obrigatórios <br> Por favor insira os dados!</h5></font></div>"; echo "<div align='center'><font color='#FF0000' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><a href='encomendar.php'>Clique aqui para corrigir</a></h5></font></div>"; //echo " <meta http-equiv=\"refresh\" content=\"2;URL=encomendar.php\"> "; //exit; } else { echo "<div align='center'><font color='#006633' size=9 face='Verdana, Arial, Helvetica, sans-serif'><h5><strong><i>Obrigado ".$name." os seus dados foram enviados com sucesso<i></strong></h5></font></div>"; // print"<input alt=imprimir align='right' border=0 name=submit src='images/print.jpg' type=image onClick='printpage()'><br>"; $mesage=msn($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data); mailbody($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data); mail($to, $sub, $mesage, $headers); $qrydrop = mysql_query("select * from cart where cookieId = '" . GetCartId() . "' order by cod asc"); while($campos = mysql_fetch_array($qrydrop)) { @mysql_query("delete from cart where cookieId = '" . GetCartId() . "' "); } $_SESSION['nr'] = ''; $_SESSION['nome'] =''; $_SESSION['end'] = ''; $_SESSION['loc'] = ''; $_SESSION['cod'] = ''; $_SESSION['pais'] = ''; $_SESSION['tel'] = ''; $_SESSION['fax'] = ''; $_SESSION['prof'] = ''; $_SESSION['act'] = ''; $_SESSION['mail'] = ''; $_SESSION['nrcont'] = ''; $_SESSION['msg'] = ''; // exit; } function mailbody($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data){ global $dbServer, $dbUser, $dbPass, $dbName; $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName); print"<font class='text1'>Data/Hora:</font> <font class='text2'>$data</font><br>"; print "<font class='text1'>Número:</font> <font class='text2'>$nr</font><br>"; print "<font class='text1'>Nome:</font> <font class='text2'>$name</font><br>"; print "<font class='text1'>Endereço:</font> <font class='text2'>$endereco</font><br>"; print "<font class='text1'>Localidade:</font> <font class='text2'>$localidade</font><br>"; print "<font class='text1'>código postal:</font> <font class='text2'>$cod_postal</font><br>"; print "<font class='text1'>País:</font> <font class='text2'>$pais</font><br>"; print "<font class='text1'>Telefone:</font> <font class='text2'>$telefone</font><br>"; print "<font class='text1'>Fax:</font> <font class='text2'>$fax</font><br>"; print "<font class='text1'>Profissão:</font> <font class='text2'>$profissao</font><br>"; print "<font class='text1'>Actividade:</font> <font class='text2'>$actividade</font><br>"; print "<font class='text1'>Email:</font> <font class='text2'>$email</font><br>"; print "<font class='text1'>Contribuinte nrº:</font> <font class='text2'>$nrcont</font><br>"; print "<font class='text1'>Comentario:</font> <font class='text2'>$msg</font>"; $result = mysql_query("select * from cart where cookieId = '" . GetCartId() . "' order by cod asc"); $num=mysql_num_rows($result); print "<br><br><font color='#006633' class='text1'><i>Total de $num produtos no seu carrinho de compras.</i></font><br><br>"; print "<table width='100%' cellspacing='0' cellpadding='2' border='0'>"; print "<tr>"; print "<td width='28%' height='25' bgcolor='#CC0000'><div align='left'><span class='linkum'><font face='verdana' size='1' color='white'><b>Código</b></font></span></div></td>"; print"<td width='33%' bgcolor='#CC0000'><div align='left' class='linkum'> <div align='left' class='linkum'><font face='verdana' size='1' color='white'><b>Qtd</b></font></div>"; print"</div></td>"; print"<td width='33%' height='25' bgcolor='#CC0000'><div align='left'><font face='verdana' size='1' color='white'><b>Preço uni.</b></font></div></td>"; print"<td width='25%' height='25' bgcolor='#CC0000'><div align='left'><span class='linkum'><font face='verdana' size='1' color='white'><b>Sub Total </b></font></span></div></td>"; print"</tr>"; $total=0; while($row = mysql_fetch_array($result)) { $preco=$row['preco']; $preco = str_replace(",",".",$preco); $query1 = mysql_query("select * from sub_produto where id=$row[itemId]"); $dados = mysql_fetch_array($query1); $total+=floatval($preco); print"<tr>"; print"<td width='28%' height='25' class='texto'><div align='left'> $row[cod] </div></td>"; print "<td width='33%' align='left' class='texto'><div align='left'> $row[qty]</div></td>"; if ($dados['preco_desc']<>"" and $dados['promocao']==1){ print "<td width='33%' height='25' class='texto'><div align='left'>€ $dados[preco_desc] </div></td>";} else{ print "<td width='33%' height='25' class='texto'><div align='left'>€ $dados[euro] </div></td>"; } print"<td width='18%' height='25' class='texto'><div align='left'>€$row[preco]</div></td>"; print"</tr>"; print "<td colspan='4'><hr size='1' color='#CCCCCC' NOSHADE></td>"; } $total=str_replace(".",",",$total); print"<tr>"; print"<td colspan='3'><div align='right' class='text1'><strong>Total: € $total<br></strong></div>"; if ($total < 60){ $prec="4,87"; $trans= str_replace(",",".",$prec); $total=str_replace(",",".",$total); $final= $total + floatval($trans); $final=str_replace(".",",",$final); print"<br><div align='right' class='text1'><strong><u>Valor do transporte: €$prec</u></strong></div><br>"; print"<div align='right' class='text1'><strong>Total a pagar: €$final</strong></div>"; } print"</td></tr>"; } function msn($nr,$name,$endereco,$localidade,$cod_postal,$pais,$telefone,$fax,$profissao,$actividade,$email,$nrcont,$msg,$data){ global $dbServer, $dbUser, $dbPass, $dbName; $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName); /*$mail.= "<br><br>Número: $nr <br>"; $mail.= "Nome: $name <br>"; $mail.="Endereço: $endereco <br>"; $mail.= "Localidade: $localidade <br>"; $mail.= "código postal: $cod_postal <br>"; $mail.= "País: $pais <br>"; $mail.= "Telefone: $telefone <br>"; $mail.= "Fax: $fax <br>"; $mail.= "Profissão: $profissao <br>"; $mail.= "Actividade: $actividade <br>"; $mail.= "Email: $email <br>"; $mail.= "Nr. Contribuinte: $nrcont <br>"; $mail.= "Mensagem: $msg <br>"; */ $mail.= "Número: $nr\nNome: $name\nEndereço: $endereco\nLocalidade: $localidade\ncódigo postal: $cod_postal\nPaÃs: $pais\nTelefone: $telefone\nFax: $fax\nProfissão: $profissao\nActividade: $actividade\nEmail: $email\nNr. Contribuinte: $nrcont\nMensagem: $msg"; $result = mysql_query("select * from cart where cookieId = '" . GetCartId() . "' order by cod asc"); $num=mysql_num_rows($result); $mail.= "\n\nTotal de $num produtos.\n\n"; //$mail.="<hr size='1' NOSHADE>"; $total=0; while($row = mysql_fetch_array($result)) { $preco=$row['preco']; $preco = str_replace(",",".",$preco); $query1 = mysql_query("select * from sub_produto where id=$row[itemId]"); $dados = mysql_fetch_array($query1); $total+=floatval($preco); $mail.= "Código: $row[cod]\n"; $mail.= "Quantidade: $row[qty]\n"; if ($dados['preco_desc']<>"" and $dados['promocao']==1){ $mail.= "Preço unitário: $dados[preco_desc]\n";} else{ $mail.= "Preço unitário: $dados[euro]\n"; } //$mail.= "Preço unitário: $dados[euro] <br>"; $mail.= "Sub Total: $row[preco]\n\n"; //$mail.="<hr size='1' NOSHADE> <br>"; } $total=str_replace(".",",",$total); $mail.="Total: € $total"; return($mail); } ?></td> </tr> <tr> <td colspan="2"> </td> </tr> </table> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td><img src="images/bannerFundoEnvio.gif" width="500" height="19"></td> </tr> </table> <p> </p> <p> </p> </body> </html>
Dude,the php age is outdated now. Its the age of AJAX now. I just completed coding a AJAX contact form. if you need it,i can give that to you. Thanks.. Pm me if you have any doubt.