Настраиваю почту в Gnus'е. Необходимо иметь возможность отправлять письма на два smtp-сервера (по выбору, с разными From, естественно). Содержимое dotgnus нашёл в гугле и содрал с него. При создании сообщения вызывается хук, который устанавливает настройки smtp по string-match с полем From. Проблема в том, что не могу придумать, как этот From задавать ДО создания сообщения. А так получается, что хук обрабатывает такой From, который установлен в user-mail-address.
Мой ~/.gnus
(setq gnus-outgoing-message-group "nnml:sent")
(setq gnus-secondary-select-methods '((nnml "")))
(setq user-mail-address "user@gmail.com")
(setq user-full-name "The User")
(setq gnus-posting-styles
'(
("^nnml.*xyz"
(address "user@xyz.ru"))
("^nnml.*gmail"
(name "The User")
(address "user@gmail.com"))))
(setq mail-sources
'((file :path "/var/spool/mail/user")
(pop :server "127.0.0.1"
:port 995
:user "user@gmail.com"
:connection ssl
:leave t)
(pop :server "xyz.ru"
:port "pop3"
:user "user@xyz.ru"
:leave t)
))
(defun fs-change-smtp ()
"Change the SMTP server according to the current from line."
(save-excursion
(let ((from
(save-restriction
(message-narrow-to-headers)
(message-fetch-field "from"))))
(message "From is `%s', setting `smtpmail-smtp-server' to `%s'"
from
(cond
((string-match "user@gmail.com" from)
;; Use stmp-auth
(message "Using smtp-auth")
;; Sending mail
(setq smtpmail-starttls-credentials '(("127.0.0.1" 587 nil nil)))
(setq smtpmail-auth-credentials '(("127.0.0.1" 587 "user@gmail.com" nil)))
(setq smtpmail-default-smtp-server "127.0.0.1")
(setq smtpmail-smtp-server "")
(setq smtpmail-smtp-service 587))
((string-match "user@xyz.ru" from)
(setq smtpmail-auth-credentials '(("xyz.ru" 25 "user@xyz.ru" nil)))
(setq smtpmail-default-smtp-server "xyz.ru")
(setq smtpmail-smtp-server "xyz.ru")
(setq smtpmail-smtp-service 25))
(t
(error
(concat "Don't know which mail server to use for "
from))))))))
(add-hook 'message-setup-hook 'fs-change-smtp)
Сорри за кривое форматирование :) На всякий случай повторю:
Настраиваю почту в Gnus'е. Необходимо иметь возможность отправлять письма на два smtp-сервера (по выбору, с разными From, естественно). Содержимое dotgnus нашёл в гугле и содрал с него. При создании сообщения вызывается хук, который устанавливает настройки smtp по string-match с полем From. Проблема в том, что не могу придумать, как этот From задавать ДО создания сообщения. А так получается, что хук обрабатывает такой From, который установлен в user-mail-address.