我正在尝试解决 Gnus 要求您输入用户名然后将其添加到 IMAP 域的问题,即防止 Gnus 将提示符下输入的用户名[email protected]
变成[email protected]@mail.bar.com
。
我在网上读过的所有指南都指定了类似这样的设置登录凭据的方法:
在 ~/.authinfo 中放置如下一行
machine imap.gmail.com login [email protected] password your-password port 993
接下来,我添加了一个如下所示的字符串:
machine mail.foo.com login [email protected] port 993
这让我得到了良好的行为(仅提示输入密码),但仍然将整个用户名添加到机器地址前面。更糟糕的是,当我尝试更改某些内容并重复登录时,我收到错误Wrong type argument: wholenump, nil
。
我的gnus.el
文件对于 IMAP 有以下内容:
; IMAP
(setq gnus-select-method
'(nnimap "mymail"
(nnimap-address "mail.bar.com")
(nnimap-server-port 993)
(nnimap-stream ssl)))
答案1
该提示在源中是硬编码的(nnimap.el
):
(defun nnimap-credentials (address ports user)
(let* ((auth-source-creation-prompts
'((user . "IMAP user at %h: ")
(secret . "IMAP password for %u@%h: ")))
(found (nth 0 (auth-source-search :max 1
:host address
:port ports
:user user
:require '(:user :secret)
:create t))))
(if found
(list (plist-get found :user)
(let ((secret (plist-get found :secret)))
(if (functionp secret)
(funcall secret)
secret))
(plist-get found :save-function))
nil)))
因此,改变这种情况的唯一方法似乎就是重新定义该函数并将提示修改为"IMAP password for %u: "
。