Can't send managed file as mail attachment
file_load return file object:


  Loads a single file object from the database.


But $message['params']['attachments'][] should be an array.
So just change $file = file_load($fid); to $file = (array)file_load($fid); in your submit function my_form_submit will be like:

function my_form_submit($form, &amp;$form_state) {
  $fid = $form_state['values']['document'];
  //file object as an array. 
  $file = (array)file_load($fid);
  $params = array(
    'attachment' =&gt; $file,
  );
  global $language;
    drupal_mail('my_module', 'key_1', 'my_own_mail@gmail.com', $language, $params);

}


Update:

to send attachement you need just the filePath try with:

$params = array(
    'attachments' =&gt; array(
      0 =&gt; array(
        'filepath' =&gt; $file-&gt;uri,
      ),
    ),
  );