diff -urp print_old/print_mail/print_mail.inc print/print_mail/print_mail.inc
--- print_old/print_mail/print_mail.inc	2010-08-12 10:43:50.000000000 +0200
+++ print/print_mail/print_mail.inc	2010-09-10 22:54:11.000000000 +0200
@@ -140,6 +140,14 @@ function print_mail_form($form_state) {
     '#value' => t('Cancel'),
   );
 
+  $form['btn_cancel'] = array(
+    '#type' => 'button',
+    '#name' => 'cancel',
+    '#value' => t('Cancel'),
+    '#executes_submit_callback' => TRUE,
+    '#submit' => array('print_mail_form_cancel'),
+  );
+
   if ($user->uid != 0) {
     $user_name = check_plain(strip_tags(theme('username', $user)));
     $form['fld_from_addr']['#default_value'] = $user->mail;
@@ -194,6 +202,8 @@ function theme_print_mail_form($form) {
  */
 function print_mail_form_validate($form, &$form_state) {
   if (array_key_exists('cancel', $form['#post'])) {
+    form_set_error(NULL,'',TRUE);
+    drupal_get_messages('error');
     return;
   }
   $from_addr = trim($form_state['values']['fld_from_addr']);
@@ -248,7 +258,6 @@ function print_mail_form_validate($form,
  * @ingroup forms
  */
 function print_mail_form_submit($form, &$form_state) {
-  if (!array_key_exists('cancel', $form_state['values'])) {
     if (!empty($form_state['values']['fld_from_name'])) {
       $from = '"'. $form_state['values']['fld_from_name'] .'" <'. $form_state['values']['fld_from_addr'] .'>';
     }
@@ -320,7 +329,6 @@ function print_mail_form_submit($form, &
         db_query("UPDATE {print_mail_page_counter} SET sentcount = sentcount + %d, sent_timestamp = %d WHERE path = '%s'", count($addresses), time(), $nodepath);
       }
     }
-  }
 
   $form_state['redirect'] = preg_replace('!^book/export/html/!', 'node/', $form_state['values']['path']);
 }
