GNUS: Как сохранить * все * вложения одновременно?

StackOverflow https://stackoverflow.com/questions/8363339

  •  27-10-2019
  •  | 
  •  

Вопрос

Я хотел бы сохранить все вложения в электронное письмо сразу. Поэтому я установил Gnus-Summary-Save-Parts-Default-Mime на ".* /.*". Однако при использовании «x m» я получаю не только все вложения, но и файл с именем «nnimap+.name@googlemail.com/inbox.2393.1» (ссылаясь на учетную запись, с которой я читаю электронные письма), которая содержит Подпись электронного письма, которое я получил. Как я могу исключить файлы этого «типа» из сохранения на «X M»? Другими словами: как я могу указать правильный резервуар для Gnus-Summary-Save-Parts-Default-Mime, чтобы предотвратить сохраненный этот файл?

Это было полезно?

Решение

Этот 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 ИЛИ ЖЕ Используйте код ниже, но не используйте оба вместе. 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)))))))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top