GNUS: Как сохранить * все * вложения одновременно?
-
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)))))))