Gnus:如何一次保存*所有*附件



我想一次保存一封邮件的所有附件。因此,我将gnus-summary-save-parts-default-mime设置为"。*/*"。但是,当使用"X m"时,我不仅获得了所有附件,而且还获得了一个名为"nnimap+my.name@googlemail.com/INBOX.2393.1"的文件(指我正在阅读电子邮件的帐户),其中包含了我收到的电子邮件的签名。我怎样才能排除这种"类型"的文件被保存在"X m"上?换句话说:我如何为gnu -summary-save-parts-default-mime指定正确的regexp来防止这个文件也被保存?

这个defadvice将通过排除任何没有文件名的部分(在这种情况下,文章本身也是如此)来完成您目前想要的:

(defadvice gnus-summary-save-parts-1 (around gnus-summary-save-parts-exclude-self activate)
  (let ((handle (ad-get-arg 2)))
    (unless (and (not (stringp (car handle)))
                 (not (mm-handle-filename handle)))
      ad-do-it)))

我正在使用Gnus v5.13;如果您也在使用相同或类似的版本,请告诉我这个修改版本的gnus-summary-save-parts-1是否适用于您;您需要将gnus-summary-save-parts-exclude-article设置为t。如果它适合你,我将为它提交一个补丁到Gnus项目。

注意,要么使用上面的defadvice ,要么使用下面的代码,但不要同时使用。默认建议是一个简单的快速修复,您可以暂时使用它。下面的代码我将作为补丁提交给Gnus项目,我在这里只包含它,如果你也使用Gnus v5.13,测试它是否在你的系统上工作。如果他们接受这个补丁,并使其成为未来版本的一部分,那么你将不需要上面的defadvice;相反,您可以自定义gnus-summary-save-parts-exclude-article变量。

(require 'gnus)
(require 'gnus-sum)
(defcustom gnus-summary-save-parts-exclude-article nil
  "If non-nil don't save article along with attachments."
  :group 'gnus-article-mime
  :type 'boolean)
(defun gnus-summary-save-parts-1 (type dir handle reverse)
  (if (stringp (car handle))
      (mapcar (lambda (h) (gnus-summary-save-parts-1 type dir h reverse))
          (cdr handle))
    (when (if reverse
          (not (string-match type (mm-handle-media-type handle)))
        (string-match type (mm-handle-media-type handle)))
      (let* ((name (or
                    (mm-handle-filename handle)
                    (unless gnus-summary-save-parts-exclude-article
                      (format "%s.%d.%d" gnus-newsgroup-name
                              (cdr gnus-article-current)
                              gnus-summary-save-parts-counter))))
             (file (when name
                     (expand-file-name
                      (gnus-map-function
                       mm-file-name-rewrite-functions
                       (file-name-nondirectory
                        name))
                      dir))))
        (when file
          (incf gnus-summary-save-parts-counter)
          (unless (file-exists-p file)
            (mm-save-part-to-file handle file)))))))

相关内容

  • 没有找到相关文章

最新更新