Index: src/mlx/gui/bugreport.py
===================================================================
--- src/mlx/gui/bugreport.py	(revision 483)
+++ src/mlx/gui/bugreport.py	(revision 484)
@@ -97,9 +97,16 @@
     def run(self):
         """Run the checklist editor dialog."""
+        self.set_sensitive(True)
+        self._description.set_sensitive(True)
         self._updateButtons()
         self._sendButton.grab_default()
         self.show_all()
         response = super(BugReportDialog, self).run()
-        self.hide()
+
+        print "response", response, RESPONSETYPE_ACCEPT
+        if response==RESPONSETYPE_ACCEPT:
+            self._send()
+        else:
+            self.hide()
 
     def _summaryChanged(self, entry):
@@ -110,2 +117,27 @@
         """Update the sensitivity of the buttoms."""
         self._sendButton.set_sensitive(self._summary.get_text()!="")
+
+    def _send(self):
+        """Send the bug report."""
+        descriptionBuffer = self._description.get_buffer()
+        description = \
+          descriptionBuffer.get_text(descriptionBuffer.get_start_iter(),
+                                     descriptionBuffer.get_end_iter(),
+                                     False)
+        self.set_sensitive(False)
+        self._gui.sendBugReport(self._summary.get_text(),
+                                description,
+                                self._email.get_text(),
+                                self._bugReportSent)
+
+    def _bugReportSent(self, returned, result):
+        """Called when the bug report was sent."""
+        self.set_sensitive(True)
+        self._description.set_sensitive(True)
+        if returned and result.success:
+            self.hide()
+            self._summary.set_text("")
+            self._description.get_buffer().set_text("")
+            self._email.set_text("")
+        else:
+            self.run()
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 483)
+++ src/mlx/gui/gui.py	(revision 484)
@@ -85,4 +85,5 @@
 
         self._sendPIREPCallback = None
+        self._sendBugReportCallback = None
 
         self.webHandler = web.Handler()
@@ -109,5 +110,5 @@
         self._checklistEditor = ChecklistEditor(self)
         self._approachCalloutsEditor = ApproachCalloutsEditor(self)
-        self._bugreportDialog = BugReportDialog(self)
+        self._bugReportDialog = BugReportDialog(self)
 
         menuBar = self._buildMenuBar(accelGroup)
@@ -1141,5 +1142,5 @@
     def _reportBug(self, menuItem):
         """Callback for reporting a bug."""
-        self._bugreportDialog.run()
+        self._bugReportDialog.run()
 
     def _setupTimeSync(self):
@@ -1382,4 +1383,47 @@
             callback(returned, result)
 
+    def sendBugReport(self, summary, description, email, callback = None):
+        """Send the bug report with the given data."""
+        self.beginBusy(xstr("sendBugReport_busy"))
+        self._sendBugReportCallback = callback
+        self.webHandler.sendBugReport(self._bugReportSentCallback,
+                                      summary, description, email)
+
+    def _bugReportSentCallback(self, returned, result):
+        """Callback function for the bug report sending result."""
+        gobject.idle_add(self._handleBugReportSent, returned, result)
+
+    def _handleBugReportSent(self, returned, result):
+        """Callback for the bug report sending result."""
+        self.endBusy()
+        secondaryMarkup = None
+        type = MESSAGETYPE_ERROR
+        if returned:
+            if result.success:
+                type = MESSAGETYPE_INFO
+                messageFormat = xstr("sendBugReport_success")
+                secondaryMarkup = xstr("sendBugReport_success_sec")
+            else:
+                messageFormat = xstr("sendBugReport_error")
+                secondaryMarkup = xstr("sendBugReport_siteerror_sec")
+        else:
+            messageFormat = xstr("sendBugReport_error")
+            secondaryMarkup = xstr("sendBugReport_error_sec")
+
+        dialog = gtk.MessageDialog(parent = self._wizard.gui._bugReportDialog,
+                                   type = type, message_format = messageFormat)
+        dialog.add_button(xstr("button_ok"), RESPONSETYPE_OK)
+        dialog.set_title(WINDOW_TITLE_BASE)
+        if secondaryMarkup is not None:
+            dialog.format_secondary_markup(secondaryMarkup)
+
+        dialog.run()
+        dialog.hide()
+
+        callback = self._sendBugReportCallback
+        self._sendBugReportCallback = None
+        if callback is not None:
+            callback(returned, result)
+
     def _listenHotkeys(self):
         """Setup the hotkeys based on the configuration."""
Index: src/mlx/web.py
===================================================================
--- src/mlx/web.py	(revision 443)
+++ src/mlx/web.py	(revision 484)
@@ -794,4 +794,26 @@
 #------------------------------------------------------------------------------
 
+class SendBugReport(Request):
+    """A request to send a bug report to the project homepage."""
+    _latin2Encoder = codecs.getencoder("iso-8859-2")
+
+    def __init__(self, callback, summary, description, email):
+        """Construct the request for the given bug report."""
+        super(SendBugReport, self).__init__(callback)
+        self._summary = summary
+        self._description = description
+        self._email = email
+
+    def run(self):
+        """Perform the sending of the bug report."""
+        time.sleep(3)
+
+        result = Result()
+        result.success = True
+
+        return result
+
+#------------------------------------------------------------------------------
+
 class Handler(threading.Thread):
     """The handler for the web services.
@@ -835,4 +857,8 @@
         """Send the given ACARS"""
         self._addRequest(SendACARS(callback, acars))
+
+    def sendBugReport(self, callback, summary, description, email):
+        """Send a bug report with the given data."""
+        self._addRequest(SendBugReport(callback, summary, description, email))
 
     def run(self):
