--- privatemsg.module	2008-01-22 14:49:22.000000000 +0800
+++ privatemsg.module	2008-03-19 18:23:14.000000000 +0800
@@ -1406,6 +1406,12 @@ function privatemsg_delete_folder_form_s
  */
 function privatemsg_new_form($message = NULL) {
   global $user;
+
+  if (_privatemsg_max_rate_check($user->uid)) {
+    form_set_error('', t('You cannot send a message so soon after sending your last message.'));
+    drupal_goto('privatemsg');
+  }
+  
   if (!isset($message)) {
     $message = 0;
 
@@ -2475,3 +2481,20 @@ function _privatemsg_user_add_defaults(&
     $account->privatemsg_setmessage_notify = variable_get('privatemsg_default_setmessage_notify', 1);
   }
 }
+
+/**
+ * Flood control check for sending out private messages.
+ *
+ * @param $uid
+ *   user uid
+ * @return
+ *   TRUE if timestamp of last private message sent is less than
+ *   the privatemsg_max_rate setting.
+ */
+function _privatemsg_max_rate_check($uid) {
+  $timestamp = db_result(db_query('SELECT MAX(timestamp) FROM {privatemsg} WHERE author = %d', $uid));
+  if (isset($timestamp) && (time() - $timestamp) < (int)variable_get('privatemsg_max_rate', 15)) {
+    return true;
+  }
+  return false;
+}
