Mail form not working proply!

Discussion in 'PHP' started by afonseca, Apr 1, 2008.

  1. #1
    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">&lt;&lt;Home</a></div></td>
    </tr>
    <tr>
    <td height="2" colspan="2" valign="bottom"></td>
    </tr>
    <tr>
    <td colspan="2">&nbsp;</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&shy;]{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&atilde;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&atilde;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&uacute;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&ccedil;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&oacute;digo postal:</font> <font class='text2'>$cod_postal</font><br>";
    print "<font class='text1'>Pa&iacute;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&atilde;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&ordm;:</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&oacute;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&ccedil;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'>&euro; $dados[preco_desc] </div></td>";}
    else{
    print "<td width='33%' height='25' class='texto'><div align='left'>&euro; $dados[euro] </div></td>";
    }


    print"<td width='18%' height='25' class='texto'><div align='left'>&euro;$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: &euro; $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&uacute;mero: $nr <br>";
    $mail.= "Nome: $name <br>";
    $mail.="Endere&ccedil;o: $endereco <br>";
    $mail.= "Localidade: $localidade <br>";
    $mail.= "c&oacute;digo postal: $cod_postal <br>";
    $mail.= "Pa&iacute;s: $pais <br>";

    $mail.= "Telefone: $telefone <br>";
    $mail.= "Fax: $fax <br>";
    $mail.= "Profiss&atilde;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">&nbsp;</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>&nbsp;</p>
    <p>&nbsp;</p>
    </body>
    </html>
     
    afonseca, Apr 1, 2008 IP
  2. jakomo

    jakomo Well-Known Member

    Messages:
    4,262
    Likes Received:
    82
    Best Answers:
    0
    Trophy Points:
    138
    #2
    Quick question, did you check your junk email box?

    Best,
    Jakomo
     
    jakomo, Apr 1, 2008 IP
  3. afonseca

    afonseca Peon

    Messages:
    48
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Yes I did!
    Thanks!

    António
     
    afonseca, Apr 1, 2008 IP
  4. Joomla Dude

    Joomla Dude Banned

    Messages:
    592
    Likes Received:
    11
    Best Answers:
    0
    Trophy Points:
    0
    #4
    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.
     
    Joomla Dude, Apr 1, 2008 IP