title: The following from address failed: myname@gmail.com
body: <p>I am trying to build a contact form in Joomla 2.5. After filling all the fields and by submitting the form I am getting an error like this:</p>
  
  <blockquote>
    <p>The following from address failed: myname@gmail.com.</p>
  </blockquote>
  
  <p>The e-mail I use is valid.</p>
  
  <p>My SMTP settings are as follows:</p>
  
  <p><strong>Mail Settings</strong> </p>
  
  <pre><code>Mailer: SMTP Server
  Mail from: myname@gmail.com
  From Name: joomla 
  Sendmail Path: /usr/sbin/sendmail
  SMTP Authentication: Yes
  SMTP Security: SSL 
  SMTP Port: 465 
  SMTP Username: myname@gmail.com
  SMTP Password: ****** 
  SMTP Host: smtp.gmail.com
  </code></pre>
  
  <p><strong>This the code for sending email</strong></p>
  
  <pre><code>&lt;?php
  /**
   * @package     Joomla.Site
   * @subpackage  com_mailto
   * @copyright   Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   */
  
      defined('_JEXEC') or die;
  
  /**
   * @package     Joomla.Site
   * @subpackage  com_mailto
   */
  
      class MailtoController extends JControllerLegacy
      {
      /**
       * Show the form so that the user can send the link to someone
       *
       * @access public
       * @since 1.5*/
  
      function mailto()
  
       {
           $session = JFactory::getSession();
       $session-&gt;set('com_mailto.formtime', time());
       JRequest::setVar('view', 'mailto');
       $this-&gt;display();
       }
  
      /**
       * Send the message and display a notice
       *
       * @access public
       * @since 1.5
       */
      function send()
      {
          // Check for request forgeries
          JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
  
          $app    = JFactory::getApplication();
          $session = JFactory::getSession();
          $db = JFactory::getDbo();
  
          $timeout = $session-&gt;get('com_mailto.formtime', 0);
          if ($timeout == 0 || time() - $timeout &lt; 20) {
              JError::raiseNotice(500, JText:: _ ('COM_MAILTO_EMAIL_NOT_SENT'));
              return $this-&gt;mailto();
          }
  
          $SiteName   = $app-&gt;getCfg('sitename');
          $MailFrom   = $app-&gt;getCfg('mailfrom');
          $FromName   = $app-&gt;getCfg('fromname');
  
          $link       = MailtoHelper::validateHash(JRequest::getCMD('link', '', 'post'));
  
          // Verify that this is a local link
          if (!$link || !JURI::isInternal($link)) {
              //Non-local url...
              JError::raiseNotice(500, JText:: _ ('COM_MAILTO_EMAIL_NOT_SENT'));
              return $this-&gt;mailto();
          }
  
          // An array of email headers we do not want to allow as input
          $headers = array (  'Content-Type:',
                              'MIME-Version:',
                              'Content-Transfer-Encoding:',
                              'bcc:',
                              'cc:');
  
          // An array of the input fields to scan for injected headers
          $fields = array(
              'mailto',
              'sender',
              'from',
              'subject',
          );
  
          /*
           * Here is the meat and potatoes of the header injection test.  We
           * iterate over the array of form input and check for header strings.
           * If we find one, send an unauthorized header and die.
           */
          foreach ($fields as $field)
          {
              foreach ($headers as $header)
              {
                  if (strpos($_POST[$field], $header) !== false)
                  {
                      JError::raiseError(403, '');
                  }
              }
          }
  
          /*
           * Free up memory
           */
          unset ($headers, $fields);
  
          $email              = JRequest::getString('mailto', '', 'post');
          $sender             = JRequest::getString('sender', '', 'post');
          $from               = JRequest::getString('from', '', 'post');
          $subject_default    = JText::sprintf('COM_MAILTO_SENT_BY', $sender);
          $subject            = JRequest::getString('subject', $subject_default, 'post');
  
          // Check for a valid to address
          $error  = false;
          if (! $email  || ! JMailHelper::isEmailAddress($email))
          {
              $error  = JText::sprintf('COM_MAILTO_EMAIL_INVALID', $email);
              JError::raiseWarning(0, $error);
          }
  
          // Check for a valid from address
          if (! $from || ! JMailHelper::isEmailAddress($from))
          {
              $error  = JText::sprintf('COM_MAILTO_EMAIL_INVALID', $from);
              JError::raiseWarning(0, $error);
          }
  
          if ($error)
          {
              return $this-&gt;mailto();
          }
  
          // Build the message to send
          $msg    = JText :: _('COM_MAILTO_EMAIL_MSG');
          $body   = sprintf($msg, $SiteName, $sender, $from, $link);
  
          // Clean the email data
          $subject = JMailHelper::cleanSubject($subject);
          $body    = JMailHelper::cleanBody($body);
          $sender  = JMailHelper::cleanAddress($sender);
  
          // Send the email
          if (JFactory::getMailer()-&gt;sendMail($from, $sender, $email, $subject, $body) !== true)
          {
              JError::raiseNotice(500, JText:: _ ('COM_MAILTO_EMAIL_NOT_SENT'));
              return $this-&gt;mailto();
          }
  
          JRequest::setVar('view', 'sent');
          $this-&gt;display();
      }
  }
  </code></pre>