title: Customer email is required error on Checkout when going through as a guest
body: <p>In Magento 1.7, whenever I go through the checkout process as guest at the end of the onepage checkout process I get the Magento error:</p>
  
  <pre><code>Customer email is required
  </code></pre>
  
  <p>Having used xDebug to profile the problem the code I have in my observer which is executed on the <strong>sales_order_place_after</strong> observer I have a function called afterOrderPlaced()</p>
  
  <pre><code>public function afterOrderPlaced($observer)
  {
      $organisation_id = Mage::getSingleton('customer/session')-&gt;getOrganisationId(); #$organisation_id = 25679;
      $this-&gt;_order = $observer-&gt;getEvent()-&gt;getOrder();
      $this-&gt;_order-&gt;setOrganisationId($organisation_id)-&gt;save();
  
      // Customer stuff
      $this-&gt;_customer_id = $this-&gt;_order-&gt;getCustomerId();
      $this-&gt;_customer = $this-&gt;_order-&gt;getCustomer(); 
  
      // problem on the next line below #PROBLEM HERE#
      $this-&gt;_customer-&gt;setOrganisationId($organisation_id)-&gt;save();
  }
  </code></pre>
  
  <p>The issue is on the last line of the function - for some reason it doesn't seem to like the save() on the customer object. This goes into the core files in Mage\Core\Model\Resource\Transaction.php on line 161 within the save() - see below:</p>
  
  <pre><code>public function save()
  {
      $this-&gt;_startTransaction();
      $error     = false;
  
      try {
          foreach ($this-&gt;_objects as $object) {
              $object-&gt;save();
          }
      } catch (Exception $e) {
          $error = $e;
      }
  
      if ($error === false) {
          try {
              $this-&gt;_runCallbacks();
          } catch (Exception $e) {
              $error = $e; ## ERROR IS HAPPENING HERE?! ##
          }
      }
  
      if ($error) {
          $this-&gt;_rollbackTransaction();
          throw $error;
      } else {
          $this-&gt;_commitTransaction();
      }
  
      return $this;
  }
  </code></pre>
  
  <p>Can anyone indicate what my problem maybe within my observer and why it doesn't seem to like to save the custom organisation_id to the customer object?</p>