gpt4 book ai didi

email - GNU 使用电子邮件从同一服务器发送多个外发帐户,无需 imap

转载 作者:行者123 更新时间:2023-12-04 23:22:19 25 4
gpt4 key购买 nike

我使用 GNU 和多个电子邮件地址,包括根据邮件上的 FROM 更改传出 SMTP。到目前为止,一切都很好。但是,现在我在同一台服务器上有多个帐户,所以通常的 .authinfo 对我不起作用。似乎答案应该类似于 http://www.cataclysmicmutation.com/2010/11/multiple-gmail-accounts-in-gnus/
但我没有使用 gmail,也没有使用 imap。我正在使用 SMTP 和 SSL。我该如何扩展该解决方案? (另外:我正在使用 gnus-posting-styles 来帮助发送具有适本地址的邮件,这是值得的)

以下是我的 .gnus 的相关部分。请注意,我正在尝试使 webdev@[ME].com 正常工作,这是对 [ME]@[ME].com(都是同一服务器)的补充。我在这里和我的 authinfo 中需要什么才能完成这项工作?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; multiple outgoing accounts ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; http://www.mostlymaths.net/2010/12/emacs-30-day-challenge-using-gnus-to.html
;; also see ~/.authinfo
(defvar smtp-accounts
'(
(ssl "[ME]@[ME].com" "mail.[ME].com"
26 "[ME]@[ME].com" secret)
;; (ssl "webdev@[ME].com" "mail.[ME].com"
;; 26 "webdev@[ME].com" secret)
(ssl "[ME]@gmail.com" "smtp.gmail.com"
587 "[ME]@gmail.com" secret)
(ssl "[ME]@gatech.edu" "mail.gatech.edu"
587 "[ME]@gatech.edu" secret)
))

;; Now lets configure smtpmail.el with your name and functions to send
;; mail using your smtp accounts by changing the from field
(require 'smtpmail)
(setq send-mail-function 'smtpmail-send-it
message-send-mail-function 'smtpmail-send-it
mail-from-style nil user-full-name "[ME] S. "
smtpmail-debug-info t smtpmail-debug-verb t)

(defun set-smtp (mech server port user password)
"Set related SMTP variables for supplied parameters."
(setq smtpmail-smtp-server server smtpmail-smtp-service port
smtpmail-auth-credentials (list (list server port user
password)) smtpmail-auth-supported (list mech)
smtpmail-starttls-credentials nil)
(message "Setting SMTP server to `%s:%s' for user `%s'."
server port user))

(defun set-smtp-ssl (server port user password &optional key
cert)
"Set related SMTP and SSL variables for supplied parameters."
(setq starttls-use-gnutls t
starttls-gnutls-program "gnutls-cli"
starttls-extra-arguments nil smtpmail-smtp-server server
smtpmail-smtp-service port
smtpmail-auth-credentials (list (list server port user
password)) smtpmail-starttls-credentials (list (list
server port key cert)))
(message
"Setting SMTP server to `%s:%s' for user `%s'. (SSL
enabled.)" server port user))

(defun change-smtp ()
"Change the SMTP server according to the current from line."
(save-excursion
(loop with from = (save-restriction
(message-narrow-to-headers)
(message-fetch-field "from"))
for (auth-mech address . auth-spec) in smtp-accounts
when (string-match address from) do (cond
((memq auth-mech '(cram-md5 plain login))
(return (apply 'set-smtp (cons auth-mech auth-spec))))
((eql auth-mech 'ssl)
(return (apply 'set-smtp-ssl auth-spec)))
(t (error "Unrecognized SMTP auth. mechanism:
`%s'." auth-mech))) finally (error "Cannot infer SMTP information."))))

;; The previous function will complain if you fill the from field with
;; an account not present in smtp-accounts.

(defvar %smtpmail-via-smtp (symbol-function 'smtpmail-via-smtp))

(defun smtpmail-via-smtp (recipient smtpmail-text-buffer)
(with-current-buffer smtpmail-text-buffer
(change-smtp))
(funcall (symbol-value '%smtpmail-via-smtp) recipient
smtpmail-text-buffer))

;; This wraps send mail via smtp mail, to be able to send multiple
;; messages with smtpmail.

;; Reply-to with same address it was sent to
(setq gnus-posting-styles
'(((header "to" "[ME]@gmail.com")
(address "[ME]@gmail.com"))
((header "to" "[ME]@gatech.edu")
(address "[ME]@gatech.edu"))
((header "to" "[ME]@[ME].com")
(address "[ME]@[ME].com"))
;; ((header "to" "webdev@[ME].com")
;; (address "webdev@[ME].com"))
;; ((header "cc" "webdev@[ME].com")
;; (address "webdev@[ME].com"))
((header "cc" "[ME]@[ME].com")
(address "[ME]@[ME].com"))
((header "cc" "[ME]@gatech.edu")
(address "[ME]@gatech.edu"))
((header "cc" "[ME]@gmail.com")
(address "[ME]@gmail.com"))))

解决方案

我正在寻找的答案在下面。为完整起见,我将使用我的/etc/host 文件、.authinfo 和 .gnus 发布最终结果解决方案的样子。

;; excerpt from .gnus
(defvar smtp-accounts
'(
(ssl "first@onedomain.com" "mail.onedomain.com"
26 "first@onedomain.com" secret)
(ssl "second@onedomain.com" "mail.onedomain2.com" ;; <-- This is the new alias in my /etc/hosts
26 "username@onedomain.com" secret) ;; <-- Added these two lines
))

;; excerpt from .authinfo
machine mail.onedomain.com login username@onedomain.com port 26 password MyPASS
machine mail.onedomain2.com login username@onedomain.com port 26 password "MyOtherPASS"

;; excerpt from /etc/hosts. The IP was obtained by pinging my mail.onedomain.com
69.89.31.60 mail.onedomain2.com onedomain2

最佳答案

message-mode 的 X-Message-SMTP-Method header 字段也可能有帮助。

例子:

X-Message-SMTP-Method: smtp smtp.fsf.org 587 other-user

更多信息:
  • https://www.gnu.org/software/emacs/manual/html_node/message/Mail-Variables.html
  • https://www.gnu.org/software/emacs/manual/html_node/gnus/Posting-Styles.html
  • 关于email - GNU 使用电子邮件从同一服务器发送多个外发帐户,无需 imap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612525/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com