(eval-when-compile (require 'cl))
 
 (require 'mailheader)
-(require 'rmail)
+(condition-case nil
+    (require 'rmail)
+  (t (message "Ignore any errors about rmail from this file")))
 (require 'nnheader)
 (require 'timezone)
 (require 'easymenu)
   "Process Fcc headers in the current buffer."
   (let ((case-fold-search t)
        (buf (current-buffer))
+       (coding-system-for-write 'raw-text)
        list file)
     (save-excursion
       (set-buffer (get-buffer-create " *message temp*"))
        (while (setq file (message-fetch-field "fcc"))
          (push file list)
          (message-remove-header "fcc" nil t)))
+      (run-hooks 'message-before-do-fcc-hook)
       (goto-char (point-min))
       (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
       (replace-match "" t t)
 (defun message-make-organization ()
   "Make an Organization header."
   (let* ((organization
-         (or (getenv "ORGANIZATION")
-             (when message-user-organization
+         (when message-user-organization
                (if (message-functionp message-user-organization)
                    (funcall message-user-organization)
-                 message-user-organization)))))
+                 message-user-organization))))
     (save-excursion
       (message-set-work-buffer)
       (cond ((stringp organization)
       (unless follow-to
        (if (or (not wide)
                to-address)
-           (setq follow-to (list (cons 'To (or to-address reply-to from))))
+           (progn
+             (setq follow-to (list (cons 'To (or to-address reply-to from))))
+             (when (and wide mct)
+               (push (cons 'Cc mct) follow-to)))
          (let (ccalist)
            (save-excursion
              (message-set-work-buffer)