title: Mailhandler.php assistance needed
body: <p>I do not understand how to make the MailHandler from my template's form submission work. I downloaded a template that I've been working on manually using DW6 alone, but I can't figure out exactly what to change in order to make the form in the Contact section send me the form info to my email address. Any help is much appreciated. </p>
  
  <p>From my index.html</p>
  
  <pre><code>&lt;form action="#" id="ContactForm"&gt;  
                                      &lt;div class="success"&gt; Enviado!&amp;nbsp; &lt;strong&gt;Nos contactaremos a la brevedad&lt;/strong&gt;&lt;/div&gt; 
                                          &lt;fieldset class="left"&gt; 
                                                      &lt;div class="block"&gt;
                                                      &lt;label class="name"&gt;
                                                          &lt;span class="textStyle3"&gt;Nombre&lt;/span&gt;
                                                          &lt;span class="bg"&gt;&lt;input type="text" value="" class="input"&gt;&lt;/span&gt;
                                                          &lt;span class="error"&gt;*Éste no es un nombre válido.&lt;/span&gt; &lt;span class="empty"&gt;*Campo Obligatorio.&lt;/span&gt; &lt;/label&gt;
                                                       &lt;label class="email"&gt;
                                                          &lt;span class="textStyle3"&gt;e-mail&lt;/span&gt;
                                                          &lt;span class="bg"&gt;&lt;input type="text" value="" class="input"&gt;&lt;/span&gt;
                                                          &lt;span class="error"&gt;*Dirección de email no válida.&lt;/span&gt; &lt;span class="empty"&gt;*Campo Obligatorio.&lt;/span&gt; &lt;/label&gt;
  
                                                       &lt;/div&gt;
                                                       &lt;div class="block"&gt;
                                                       &lt;label class="message"&gt;
                                                          &lt;span class="textStyle3"&gt;Mensaje&lt;/span&gt;
                                                          &lt;span class="bg"&gt;&lt;textarea rows="1" cols="2"&gt;&lt;/textarea&gt;&lt;/span&gt;
                                                          &lt;span class="error"&gt;*Este mensaje es muy corto.&lt;/span&gt; &lt;span class="empty"&gt;*Campo Obligatorio.&lt;/span&gt; &lt;/label&gt;
                                                       &lt;/div&gt;
                                                        &lt;div class="formBtn right"&gt;
                                                              &lt;a href="#" data-type="submit" class="more"&gt;Enviar&lt;/a&gt;
                                                        &lt;/div&gt;
                                                        &lt;div class="formBtn left"&gt;
                                                               &lt;a href="#" data-type="reset" class="more"&gt;Limpiar&lt;/a&gt;
                                                        &lt;/div&gt;
                                              &lt;/fieldset&gt;
                                          &lt;/form&gt;
  </code></pre>
  
  <p>From my MailHandler.php</p>
  
  <pre><code>&lt;?php
  $owner_email = $_POST["owner_email"];
  $headers = 'From:' . $_POST["email"];
  $subject = 'A message from your site visitor ' . $_POST["name"];
  $messageBody = "";
  
  if($_POST['name']!='nope'){
      $messageBody .= '&lt;p&gt;Visitor: ' . $_POST["name"] . '&lt;/p&gt;' . "\n";
      $messageBody .= '&lt;br&gt;' . "\n";
  }
  if($_POST['email']!='nope'){
      $messageBody .= '&lt;p&gt;Email Address: ' . $_POST['email'] . '&lt;/p&gt;' . "\n";
      $messageBody .= '&lt;br&gt;' . "\n";
  }else{
      $headers = '';
  }
  if($_POST['state']!='nope'){        
      $messageBody .= '&lt;p&gt;State: ' . $_POST['state'] . '&lt;/p&gt;' . "\n";
      $messageBody .= '&lt;br&gt;' . "\n";
  }
  if($_POST['phone']!='nope'){        
      $messageBody .= '&lt;p&gt;Phone Number: ' . $_POST['phone'] . '&lt;/p&gt;' . "\n";
      $messageBody .= '&lt;br&gt;' . "\n";
  }    
  if($_POST['fax']!='nope'){        
      $messageBody .= '&lt;p&gt;Fax Number: ' . $_POST['fax'] . '&lt;/p&gt;' . "\n";
      $messageBody .= '&lt;br&gt;' . "\n";
  }
  if($_POST['message']!='nope'){
      $messageBody .= '&lt;p&gt;Message: ' . $_POST['message'] . '&lt;/p&gt;' . "\n";
  }
  
  if($_POST["stripHTML"] == 'true'){
      $messageBody = strip_tags($messageBody);
  }
  
  try{
      if(!mail($owner_email, $subject, $messageBody, $headers)){
          throw new Exception('mail failed');
      }else{
          echo 'mail sent';
      }
  }catch(Exception $e){
      echo $e-&gt;getMessage() ."\n";
  }
  ?&gt;
  </code></pre>
  
  <p>From my scripts.js</p>
  
  <pre><code>//forms
  ;(function($){
  $.fn.forms=function(o){
      return this.each(function(){
          var th=$(this)
              ,_=th.data('forms')||{
                  errorCl:'error',
                  emptyCl:'empty',
                  invalidCl:'invalid',
                  notRequiredCl:'notRequired',
                  successCl:'success',
                  successShow:'4000',
                  mailHandlerURL:'bin/MailHandler.php',
                  ownerEmail:'info@pacificbayhotel.com',
                  stripHTML:true,
                  smtpMailServer:'localhost',
                  targets:'input,textarea',
                  controls:'a[data-type=reset],a[data-type=submit]',
                  validate:true,
                  rx:{
                      ".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
                      ".state":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
                      ".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'},
                      ".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
                      ".fax":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
                      ".message":{rx:/.{20}/,target:'textarea'}
                  },
                  preFu:function(){
                      _.labels.each(function(){
                          var label=$(this),
                              inp=$(_.targets,this),
                              defVal=inp.val(),
                              trueVal=(function(){
                                          var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&amp;&amp;!!tmp[1]&amp;&amp;tmp[1]):inp.html()
                                          return defVal==''?defVal:tmp
                                      })()
                          trueVal!=defVal
                              &amp;&amp;inp.val(defVal=trueVal||defVal)
                          label.data({defVal:defVal})                             
                          inp
                              .bind('focus',function(){
                                  inp.val()==defVal
                                      &amp;&amp;(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl))
                              })
                              .bind('blur',function(){
                                  _.validateFu(label)
                                  if(_.isEmpty(label))
                                      inp.val(defVal)
                                      ,_.hideErrorFu(label.removeClass(_.invalidCl))                                          
                              })
                              .bind('keyup',function(){
                                  label.hasClass(_.invalidCl)
                                      &amp;&amp;_.validateFu(label)
                              })
                          label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide()
                      })
                      _.success=$('.'+_.successCl,_.form).hide()
                  },
                  isRequired:function(el){                            
                      return !el.hasClass(_.notRequiredCl)
                  },
                  isValid:function(el){                           
                      var ret=true
                      $.each(_.rx,function(k,d){
                          if(el.is(k))
                              ret=d.rx.test(el.find(d.target).val())                                      
                      })
                      return ret                          
                  },
                  isEmpty:function(el){
                      var tmp
                      return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal')
                  },
                  validateFu:function(el){                            
                      el.each(function(){
                          var th=$(this)
                              ,req=_.isRequired(th)
                              ,empty=_.isEmpty(th)
                              ,valid=_.isValid(th)                                
  
                          if(empty&amp;&amp;req)
                              _.showEmptyFu(th.addClass(_.invalidCl))
                          else
                              _.hideEmptyFu(th.removeClass(_.invalidCl))
  
                          if(!empty)
                              if(valid)
                                  _.hideErrorFu(th.removeClass(_.invalidCl))
                              else
                                  _.showErrorFu(th.addClass(_.invalidCl))                             
                      })
                  },
                  getValFromLabel:function(label){
                      var val=$('input,textarea',label).val()
                          ,defVal=label.data('defVal')                                
                      return label.length?val==defVal?'nope':val:'nope'
                  }
                  ,submitFu:function(){
                      _.validateFu(_.labels)                          
                      if(!_.form.has('.'+_.invalidCl).length)
                          $.ajax({
                              type: "POST",
                              url:_.mailHandlerURL,
                              data:{
                                  name:_.getValFromLabel($('.name',_.form)),
                                  email:_.getValFromLabel($('.email',_.form)),
                                  phone:_.getValFromLabel($('.phone',_.form)),
                                  fax:_.getValFromLabel($('.fax',_.form)),
                                  state:_.getValFromLabel($('.state',_.form)),
                                  message:_.getValFromLabel($('.message',_.form)),
                                  owner_email:_.ownerEmail,
                                  stripHTML:_.stripHTML
                              },
                              success: function(){
                                  _.showFu()
                              }
                          })          
                  },
                  showFu:function(){
                      _.success.slideDown(function(){
                          setTimeout(function(){
                              _.success.slideUp()
                              _.form.trigger('reset')
                          },_.successShow)
                      })
                  },
                  controlsFu:function(){
                      $(_.controls,_.form).each(function(){
                          var th=$(this)
                          th
                              .bind('click',function(){
                                  _.form.trigger(th.data('type'))
                                  return false
                              })
                      })
                  },
                  showErrorFu:function(label){
                      label.find('.'+_.errorCl).slideDown()
                  },
                  hideErrorFu:function(label){
                      label.find('.'+_.errorCl).slideUp()
                  },
                  showEmptyFu:function(label){
                      label.find('.'+_.emptyCl).slideDown()
                      _.hideErrorFu(label)
                  },
                  hideEmptyFu:function(label){
                      label.find('.'+_.emptyCl).slideUp()
                  },
                  init:function(){
                      _.form=_.me                     
                      _.labels=$('label',_.form)
  
                      _.preFu()
  
                      _.controlsFu()
  
                      _.form
                          .bind('submit',function(){
                              if(_.validate)
                                  _.submitFu()
                              else
                                  _.form[0].submit()
                              return false
                          })
                          .bind('reset',function(){
                              _.labels.removeClass(_.invalidCl)                                   
                              _.labels.each(function(){
                                  var th=$(this)
                                  _.hideErrorFu(th)
                                  _.hideEmptyFu(th)
                              })
                          })
                      _.form.trigger('reset')
                  }
              }
          _.me||_.init(_.me=th.data({forms:_}))
          typeof o=='object'
              &amp;&amp;$.extend(_,o)
      })
  }
  })(jQuery)
  $(window).load(function(){
  $('#ContactForm').forms({
      ownerEmail:'#'
  })
  })
  </code></pre>