Send a mail from my custom module after custom form submit by user
You surely can send an email on the submit. 

See the code below. 

function my_module_action($form, &amp;$form_state) {
  drupal_set_message(t('Challenge Accepted'));
  $query = db_insert('challenges')
    -&gt;fields(array(
    'cid' =&gt; '$node-&gt;nid',
    'uid' =&gt; '$user-&gt;uid'
    ))
    -&gt;execute();
  $message = array('A new entry has been submitted');
  $to = 'example@example.com';
  $params = array(
    'body' =&gt; $body,
     'subject' =&gt; 'Website Information Request',
  );
  if (drupal_mail('my_module', 'some_mail_key', $to, language_default(), $params)) {
        drupal_set_message('Thanks, email sent.');    
    } else {
        drupal_set_message('Email not sent.');
    }
}


You also need this function. 

function my_module_mail($key, &amp;$message, $params) {
  $message['subject'] = $params['subject'];
  $message['body'] = $params['body'];
}


in drupal_mail(), we pass $params array which contains parameters to build the email. If your module sends multiple emails, you can differentiate them using the $key variable. 
But in this example, we simple assign message's variables from the direct $params variables. 
Note that $message (in your submit handler) needs to be an array of text that you need to send. 
For example, 

$body = array();
$body[] = 'Hello,';
$body[] = 'There is a new submission...';


This is because when the email gets sent, body content will be imploded by a new line character. Each value in the $body array will appear in a new line. 

Also, as a fine tuning, you won't need my_module_form function if you format your hook_menu function like this:

function my_module_menu() {
  $items = array();
  $items['my_module/form'] = array(
    'title' =&gt; 'My form', // We don't t() menu titles.
    'page callback' =&gt; 'drupal_get_form', // Directly call drupal_get_form...
    'page arguments' =&gt; array('my_module_my_form'), // ...with this argument.
    'access arguments' =&gt; array('access content'),
    'description' =&gt; t('My form'),
    'type' =&gt; MENU_CALLBACK,
  );
  return $items;
}