Only in print-attachment: print-attachment.patch
diff -urp print/print_mail/print_mail.inc print-attachment/print_mail/print_mail.inc
--- print/print_mail/print_mail.inc	2009-10-03 12:52:10.000000000 -0400
+++ print-attachment/print_mail/print_mail.inc	2009-10-27 22:31:44.135875000 -0400
@@ -44,7 +44,8 @@ function print_mail_form($form_state) {
   }
   $cid = isset($_GET['comment']) ? (int)$_GET['comment'] : NULL;
   $title = _print_get_title($path);
-
+  $link = $GLOBALS['base_url'] . '/' . $path;
+  
   if (count($form_state['post']) == 0) {
     $nodepath = drupal_get_normal_path($path);
     db_query("UPDATE {print_mail_page_counter} SET totalcount = totalcount + 1, timestamp = %d WHERE path = '%s'", time(), $nodepath);
@@ -57,6 +58,8 @@ function print_mail_form($form_state) {
 
   $form['path'] = array('#type' => 'value', '#value' => $path);
   $form['cid'] =  array('#type' => 'value', '#value' => $cid);
+  $form['link'] = array('#type' => 'value', '#value' => $link);
+  $form['title'] = array('#type' => 'value', '#value' => $title);
 
   $form['fld_from_addr'] = array(
     '#type' => 'textfield',
@@ -83,8 +86,19 @@ function print_mail_form($form_state) {
   $form['fld_title'] = array(
     '#type' => 'item',
     '#title' => t('Page to be sent'),
-    '#value' => l($title, $path, array('attributes' => array('title' => t('View page')))),
+    '#value' => l($title, $link, array('attributes' => array('title' => t('View page')))),
   );
+  $form['fld_send_option'] = array (
+    '#type' => 'select',
+    '#title' => t('Send page as'),
+    '#default_value' => 'plain-attachment',
+    '#options' => array(
+      'sendlink' => 'Link',
+      'sendpage' => 'Inline HTML', 
+      'inline-attachment' => 'Inline HTML with Attachment', 
+      'plain-attachment' => 'Plain Text with Attachment',
+    ),
+  );  
   $form['txt_message'] = array(
     '#type' => 'textarea',
     '#title' => t('Your message'),
@@ -155,6 +169,7 @@ function theme_print_mail_form($form) {
       case 'txt_to_addrs':
       case 'fld_subject':
       case 'fld_title':
+      case 'fld_send_option':
         $tmp = str_replace('<label', '<label class ="printmail-label"', $tmp);
         break;
     }
@@ -221,6 +236,16 @@ function print_mail_form_validate($form,
     form_set_error('txt_message', t('You must enter a message.'));
   }
 
+  // Check for MIME library when sending attachments
+  switch($form['fld_send_option']) {
+    case 'plain-attachment':
+    case 'inline-attachment':
+      if (!include_once('Mail/mime.php')) {
+        form_set_error('fld_send_option', t('The PEAR Mail_mime library is required for this send option and was not found.'));
+      }
+    break;
+  }
+
   $form_state['values']['fld_from_addr'] = $from_addr;
   $form_state['values']['fld_from_name'] = trim($form_state['values']['fld_from_name']);
   // Re-create the string from the re-organized array
@@ -256,6 +281,10 @@ function print_mail_form_submit($form, &
     if ($print !== FALSE) {
       $params = array();
       $params['subject'] = $form_state['values']['fld_subject'];
+      $params['message'] = $form_state['values']['txt_message'];
+      $params['send_option'] = $form_state['values']['fld_send_option'];
+      $params['link'] = $form_state['values']['link'];
+      $params['title'] = $form_state['values']['title'];
 
       $node = $print['node'];
       ob_start();
@@ -316,12 +345,56 @@ function print_mail_form_submit($form, &
  * Implementation of hook_mail().
  */
 function print_mail_mail($key, &$message, $params) {
-  switch ($key) {
+  // Set the message subject for all send options
+  $message['subject'] = $params['subject'];
+
+  switch ($params['send_option']) {
     case 'sendpage':
-      $message['subject'] = $params['subject'];
       $message['body'] = $params['body'];
       $message['headers']['Content-Type'] = 'text/html; charset=utf-8';
     break;
+    case 'sendlink':
+      // Generate plain-text and html versions of message with link
+      $sendlink_plain = $params['message'] . '\n\n' . $params['link'];
+      $sendlink_html = $params['message'] . '<br/><br/>' . l($params['title'], $params['link']);
+
+      // Send HTML-only version if MIME library not present
+      if (!include_once('Mail/mime.php')) {
+        $message['body'] = $sendlink_html;
+        $message['headers']['Content-Type'] = 'text/html; charset=utf-8';
+        return;
+      }    
+    case 'plain-attachment':
+    case 'inline-attachment':
+      // Include MIME library
+      include_once('Mail/mime.php');
+    
+      // Configure new MIME object
+      $mime = new Mail_mime("\n");
+      $mime_params['html_encoding'] = '7bit';
+
+      // Pass message contents into MIME object
+      switch ($params['send_option']) {
+        case 'sendlink':
+          $mime->setTXTBody($sendlink_plain);
+          $mime->setHTMLBody($sendlink_html);
+        break;
+        case 'inline-attachment':
+          $mime->setHTMLBody($params['body']);
+        case 'plain-attachment':
+          $mime->setTXTBody($params['message']);
+          $mime->addAttachment($params['body'],'text/html','Attachment.html',false);
+        break;
+      }
+
+      // Store MIME message output in message array
+      $message['body'] = $mime->get($mime_params);
+      $message['headers'] = $mime->headers($message['headers']);
+
+      // Strip special characters from Content-Type header
+      // Required to prevent mime_header_encode() from disrupting Content-Type header
+      $message['headers']['Content-Type'] = preg_replace('/[^\x20-\x7E]/','', $message['headers']['Content-Type']);
+    break;
   }
 }
 
