Problem sending email in PHP

Asked

Viewed 261 times

2

I need help with a form on PHP complex, as well as sending email for administrators, send also to the client. The email is in html and automatically creates a pdf through html2pdf. So that’s it, it’s working, because it creates the PDF, sends the email with link to the PDF, but is not taking the values entered in the form.

Form process, PDF creation, email submission, and a counter:

<?php
require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
?>
    <?php
    if(isset($_POST['email'])) {

        // EDIT THE 2 LINES BELOW AS REQUIRED
        $email_to = "[email protected],[email protected]";
    $email_client = $_POST['email'];

    $email_subject = "3Compare Booking";

    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted.";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['number']) ||
        !isset($_POST['optionsRadios']))
         {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       


    $name = $_POST['name']; // required
    $email = $_POST['email']; // required
    $number = $_POST['number']; // required
    $optionsAreas = $_POST['optionsAreas']; // not required
    $optionsRadios = $_POST['optionsRadios']; // not required
    $newsletter = $_POST['newsletter'];
    $ref = $_POST['ref'];

}


    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email)) {
    $error_message .= "The Email Address you entered does not appear to be valid.<br />";
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(strlen($number) < 2) {
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$optionsRadios)) {
    $error_message .= 'The Comments you entered do not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$newsletter)) {
    $error_message .= 'The Comments you entered do not appear to be valid.<br />';
  }

  function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
    $datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);
$ref="3COMPAREWLC".$count."-".date('ymd');
$numlink = '3COMPAREWLC'.$count.'-'.date('ymd');
    $email_message ="<body style='background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;'>
<div style='background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;'>
<table cellspacing='0' cellpadding='0' border='0' height='100%' width='100%'>
        <tr>
            <td align='center' valign='top' style='padding:20px 0 20px 0'>
                <!-- [ header starts here] -->
                <table bgcolor='FFFFFF' cellspacing='0' cellpadding='10' border='0' width='650' style='border:1px solid #E0E0E0;'>
                    <tr>
                        <td valign='top'>
                            <a href='http://super8.pt/3compare/'><img src='http://super8.pt/3compare/library/images/3compare_logo.jpg' alt='3COMPARE'  style='margin-bottom:10px;' border='0'/></a></td>
                    </tr>
                <!-- [ middle starts here] -->
                    <tr>
                        <td valign='top'>
                            <h1 style='font-size:22px; font-weight:normal; line-height:22px; margin:0 0 11px 0;'>New Reservation</h1>
                            <p style='font-size:12px; line-height:16px; margin:0 0 16px 0;'>A new reservation was made on the website 3COMPARE</p>
                            <p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>
                               Personal Info <br/>
                               <strong>Reference:</strong> ".clean_string($ref)."<br/>
                                <strong>Name:</strong> ". $_POST['name']."<br/>
                                <strong>Email:</strong> ".$_POST['email']."<br/>
                                <strong>Mobile Number:</strong> ".$_POST['number']."<br/>
                                <strong>Payment Method:</strong> ".$_POST['optionsRadios']."<br/>
                                <strong>Newsletter:</strong> ".$_POST['newsletter']."<p>
                            <p style='font-size:12px; line-height:16px; margin:0 0 8px 0;'>Laser Hair Loss Therapy:<br/>
30-minute session per week for three months, with 13 sessions in total.</p>
                            <p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>".$optionsAreas."</p>
                            <p style='font-size:12px; line-height:16px; margin:0;'></p>
                            <p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>
                            <a href='http://super8.pt/3compare/voucher/ticket".$numlink.".pdf'>Click here to download and print your voucher</a>
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td bgcolor='#EAEAEA' align='center' style='background:#EAEAEA; text-align:center;'><center><p style='font-size:12px; margin:0;'><strong>3COMPARE</strong></p></center></td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</div>
</body>";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers = "Content-Type: text/html; charset=utf-8\r\n";
@mail($email_to, $email_subject, $email_message, $headers);  
@mail($email_client, $email_subject, $email_message, $headers);
ob_start();
    $num = '3COMPAREWLC'.$count.'-'.date('ymd');
    $nom = $name;
    $date = '2014/07/31';
?>
<style type="text/css">
<!--
    div.zone { border: none; border-radius: 6mm; background: #FFFFFF; border-collapse: collapse; padding:3mm; font-size: 2.7mm;}
    h1 { padding: 0; margin: 0; color: #DD0000; font-size: 7mm; }
    h2 { padding: 0; margin: 0; color: #222222; font-size: 5mm; position: relative; }
-->
</style>
<page format="100x200" orientation="L" backcolor="#f0a804" style="font: arial;">
    <div style="rotate: 90; position: absolute; width: 100mm; height: 4mm; left: 195mm; top: 0; font-style: italic; font-weight: normal; text-align: center; font-size: 2.5mm;">
        This is your e-ticket to present at the Clinic 
    </div>
    <table style="width: 99%;border: none;" cellspacing="4mm" cellpadding="0">
        <tr>
            <td colspan="2" style="width: 100%">
                <div class="zone" style="height: 34mm;position: relative;font-size: 5mm;">
                    <div style="position: absolute; right: 3mm; top: 3mm; text-align: right; font-size: 4mm; ">
                        <b><?php echo $nom; ?></b><br>
                    </div>
                    <div style="position: absolute; right: 3mm; bottom: 3mm; text-align: right; font-size: 4mm; ">
                        <b>Weight Loss Clinic</b><br>
                        Reference : <b><?php echo $num; ?></b><br>
                        Booked at : <b><?php echo date('d/m/Y à H:i:s'); ?></b><br>
                    </div>
                    <h1>VOUCHER</h1>
                    &nbsp;&nbsp;&nbsp;&nbsp;<b>Valid until <?php echo $date; ?></b><br>
                    <img src="library/images/3compare_logo.jpg" width="233" height="65" alt="logo" style="margin-top: 3mm; margin-left: 20mm">
                </div>
            </td>
        </tr>
        <tr>
            <td style="width: 25%;">
                <div class="zone" style="height: 40mm;vertical-align: middle;text-align: left;">
                    <b><?php echo $_POST['optionsAreas']?></b>
                </div>
            </td>
            <td style="width: 75%">
                <div class="zone" style="height: 40mm;vertical-align: middle; text-align: justify">
                    <b>Personal Info</b><br>
                                <strong>Name:</strong> <?php echo $_POST['name']?><br/>
                                <strong>Email:</strong> <?php echo $_POST['email']?><br/>
                                <strong>Mobile Number:</strong> <?php echo $_POST['number']?><br/>
                                <strong>Payment Method:</strong> <?php echo $_POST['optionsRadios']?><br/>
                            <p style="font-size:10px; line-height:12px; margin:0 0 8px 0;"><b>Laser Hair Loss Therapy:</b><br/>
30-minute session per week for three months, with 13 sessions in total.</p>
                </div>
            </td>
        </tr>
    </table>
</page>
<?php
     $content = ob_get_clean();

    // convert
    try
    {
        $html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0);
        $html2pdf->pdf->SetDisplayMode('fullpage');
        $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
        $html2pdf->Output('voucher/ticket'.$num.'.pdf','F');
    }
    catch(HTML2PDF_exception $e) {
        echo $e;
        exit;
    }
?>
<!-- include your own success html here -->
<div class="container orange-bg">
        <p><div class="alert alert-success">Thank you <?php echo $_POST['name']?> for booking at 3COMPARE. We will be in touch with you very soon. <a class="btn btn-warning btn-shadow" href="<?php echo 'voucher/ticket'.$num.'.pdf'?>"><strong>Download your Voucher</strong> <i class="fa fa-arrow-circle-down"></i></a></div></p>
      </div>
      <?php
/* counter */

//opens countlog.txt to read the number of hits
$datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);
$count=$count + 1 ;

// opens countlog.txt to change new hit number
$datei = fopen("library/countlog.txt","w");
fwrite($datei, $count);
fclose($datei);

?>

<?php
}
?>

Form:

    <form class="form-horizontal marginform" role="form" method="post" action="<?php $_SERVER['PHP_SELF']; ?>" name="frm1" id="frm1">
        <div class="row">
          <div class="col-md-4 white-box wborder-box">
          <?php
            $onearea .= "Order Details <br/>
                                <strong>Duration:</strong> 45 mins<br/>
                                <strong>Employee:</strong> Cristina @ HDC<br/>
                                <strong>SubTotal:</strong> £85.00<br/>
                                <strong>Total</strong>: £85.00<br/>
                                <strong>Valid until</strong>: 2014-07-31<br/>";

    $twoareas .= "Order Details <br/>
                                <strong>Duration:</strong> 45 mins<br/>
                                <strong>Employee:</strong> Cristina @ HDC<br/>
                                <strong>SubTotal:</strong> £165.00<br/>
                                <strong>Total</strong>: £165.00<br/>
                                <strong>Valid until</strong>: 2014-07-31<br/>";
                ?>
            <h5>Order Details</h5>
            <div class="radio-inline areasform">
              <label for="optionsAreas1" name="oa1label" class="control-label">One Area</label>
              <input type="radio" name="optionsAreas" id="optionsAreas1" value="<?php echo ($onearea); ?>">
            </div>
            <div class="radio-inline areasform">
            <label for="optionsAreas2" class="control-label">Two Areas</label>
              <input type="radio" name="optionsAreas" id="optionsAreas2" value="<?php echo ($twoareas); ?>">
            </div>
            <p><strong>Cryogenic Lipolysis Therapy</br>45-minute session per week for three months, with 13 sessions in total.</strong></p>

            <div id="hideOneArea">
            <h5>One Area</h5>
            <dl class="dl-horizontal">
            <dt><small>Duration</small></dt>
            <dd><small>45 mins</small></dd>
            <dt><small>Employee</small></dt>
            <dd><small>Cristina @ HDC</small></dd>
            <dt><small>SUBTOTAL</small></dt>
            <dd><small>£85.00</small></dd>
            <dt><small>TOTAL</small></dt>
            <dd><small>£85.00</small></dd>
            </dl>
            </div>
            <div id="hideTwoAreas">
            <h5>Two Areas</h5>
            <dl class="dl-horizontal">
            <dt><small>Duration</small></dt>
            <dd><small>45 mins</small></dd>
            <dt><small>Employee</small></dt>
            <dd><small>Cristina @ HDC</small></dd>
            <dt><small>SUBTOTAL</small></dt>
            <dd><small>£165.00</small></dd>
            <dt><small>TOTAL</small></dt>
            <dd><small>£165.00</small></dd>
            </dl>
            </div>

            <p><strong>Payment method:</strong></p>
            <div class="radio">
              <label>
              <input type="radio" name="optionsRadios" id="optionsRadios1" value="Pay At Clinic" checked>Pay At Clinic
              </label>
            </div>
            <div class="radio">
              <input type="radio" name="optionsRadios" id="optionsRadios2" value="Other Way" class="hidden">
            </div>
            <p><strong>Available until: 2014-07-31</strong></p>
            <input name="ref" type="hidden" value="<?php $datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);echo "3COMPAREWLC".$count."-".date('ymd');?>">
          </div>

          <div class="col-md-8">
          <div class="row">
          <div class="col-md-12 white-box wborder-box">
          <h5>Your contact details</h5>
  <div class="form-group">
    <label for="inputEmail3" class="col-sm-4 control-label"><small>Your full name*</small></label>
    <div class="col-sm-8">
      <input type="text" name="name" class="form-control" id="inputEmail3" placeholder="Full Name" value="<?php echo $name; ?>" required>
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword3" class="col-sm-4 control-label"><small>Your email address*</small></label>
    <div class="col-sm-8">
      <input type="email" name="email" class="form-control" id="inputPassword3" placeholder="Email" required>
    </div>
  </div>
  <div class="form-group">
    <label for="number" class="col-sm-4 control-label"><small class="redtext">Mobile Number*</small></label>
    <div class="col-sm-6">
      <input type="tel" name="number" class="form-control" id="number" placeholder="Mobile Number" required>
    </div>
  </div>

  <div class="form-group">
    <div class="col-sm-12 col-xs-12 alinharr">
      <button type="submit" name="submit" class="btn btn-lg btn-danger btn-shadow" value="Send">
      <div class="row">
      <div class="col-sm-8 col-xs-8">
      <small class="sizebtn">Click Here to</small></br><strong class="sizebtnlg">Complete Your Order</strong>
      </div>
      <div class="col-sm-4 col-xs-4">
      <i class="fa fa-gift fa-lg fa-3x"></i>
      </div>
      </div>

      </button>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-12">
      <div class="checkbox">
        <label>
          <input type="checkbox" name="newsletter" value="Yes" id="newsletter" checked> <small>Keep me in the loop about special offers and the latest community news</small> 
        </label>
        <input type="checkbox" class="hidden" name="newsletter" value="No" id="newsletter1">

      </div>
    </div>
  </div>
  </div>
  </div>

        </div>
        </div>
</form>

The problem is in the form, because it is not taking the entered values, so send the email without the data.

UPDATE:

I can send the data now, minus the data from OptionsAreas and is not sending email for the customer. Another problem is that the OptionsAreas is not hiding values in the form. If I select one view, the other should not appear.

Somebody please help me

  • Try debugging your script, if you give an echo $_POST['name'], it appears something ?

  • Thank you. I can echo $_POST['name'] to get you to pick up values other than Options Areas. I still can not send email to the customer

1 answer

1

I tested your script here and it worked 'perfectly', generated the pdf in the voucher folder, counted the visit to generate the voucher code, and generated the two emails as well. As I test locally in XAMPP, two files are generated with the emails in the mailoutput folder, indicating as soon as it works, I opened the files and they are OK.

For no doubt put online and also sent the emails as well as generated the pdf. With regard to Options, I confess that I still do not understand your doubt.

Did the Jquery Validation doesn’t solve your problem?

And instead of using echo $_POST['name'], how about using the print_r($_POST).

Take the test online

Browser other questions tagged

You are not signed in. Login or sign up in order to post.