class Mail::Message

def find_attachment

Returns the filename of the attachment (if it exists) or returns nil
def find_attachment
  content_type_name = header[:content_type].filename rescue nil
  content_disp_name = header[:content_disposition].filename rescue nil
  content_loc_name  = header[:content_location].location rescue nil
  case
  when content_disposition && content_disp_name
    filename = content_disp_name
  when content_type && content_type_name
    filename = content_type_name
  when content_location && content_loc_name
    filename = content_loc_name
  else
    filename = nil
  end
  filename = Mail::Encodings.decode_encode(filename, :decode) if filename rescue filename
  filename
end