簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-imap-send 最後更新於 2.51.0

名稱

git-imap-send - 將來自 stdin 的補丁集合傳送到 IMAP 資料夾

概要

git imap-send [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>]
git imap-send --list

描述

此命令將使用 git format-patch 生成的郵箱上傳到 IMAP 草稿資料夾。這允許使用不能直接讀取郵箱檔案的郵件客戶端傳送補丁,就像傳送其他電子郵件一樣。該命令也適用於任何包含 FromDateSubject 欄位(按此順序)的通用郵箱。

典型用法如下:

$ git format-patch --signoff --stdout --attach origin | git imap-send

選項

-v
--verbose

顯示詳細資訊。

-q
--quiet

安靜模式。

-f <folder>
--folder=<folder>

指定要儲存電子郵件的資料夾。例如: --folder=[Gmail]/Drafts-f INBOX/Drafts

--curl

使用 libcurl 與 IMAP 伺服器通訊,除非進行隧道連線。如果 Git 未啟用 USE_CURL_FOR_IMAP_SEND 選項則忽略。

--no-curl

使用 Git 自帶的 IMAP 例程與 IMAP 伺服器通訊,而不是使用 libcurl。如果 Git 啟用了 NO_OPENSSL 選項則忽略。

--list

執行 IMAP LIST 命令以輸出所有存在的資料夾列表。

配置

要使用此工具,必須設定 imap.folderimap.tunnelimap.host 為適當的值。

本節中此行以上的所有內容均未包含在 git-config[1] 文件中。以下內容與該文件中的內容相同

imap.folder

將郵件放入的資料夾,通常是草稿資料夾。例如: INBOX.DraftsINBOX/Drafts[Gmail]/Drafts。必須指定要互動的 IMAP 資料夾;當未提供 --folder 選項時,此配置變數的值將用作回退預設值。

imap.tunnel

用於透過隧道連線到 IMAP 伺服器的命令,命令將透過該隧道進行管道傳輸,而不是直接網路連線到伺服器。當未設定 imap.host 時需要。

imap.host

標識伺服器的 URL。對非安全連線使用 imap:// 字首,對安全連線使用 imaps:// 字首。當設定 imap.tunnel 時忽略,否則必需。

imap.user

登入伺服器時使用的使用者名稱。

imap.pass

登入伺服器時使用的密碼。

imap.port

連線到伺服器的整數埠號。對於 imap:// 主機預設為 143,對於 imaps:// 主機預設為 993。當設定 imap.tunnel 時忽略。

imap.sslverify

一個布林值,用於啟用/停用 SSL/TLS 連線使用的伺服器證書的驗證。預設為 true。當設定 imap.tunnel 時忽略。

imap.preformattedHTML

一個布林值,用於啟用/停用傳送補丁時使用 HTML 編碼。HTML 編碼的補丁將用 <pre> 包圍,並具有 text/html 的內容型別。諷刺的是,啟用此選項會導致 Thunderbird 將補丁作為純文字、format=fixed 的電子郵件傳送。預設為 false

imap.authMethod

指定用於向 IMAP 伺服器進行身份驗證的身份驗證方法。如果 Git 在編譯時啟用了 NO_CURL 選項,或者您的 curl 版本低於 7.34.0,或者您使用 --no-curl 選項執行 git-imap-send,則唯一支援的方法是 PLAINCRAM-MD5OAUTHBEARERXOAUTH2。如果未設定此項,則 git imap-send 使用基本的 IMAP 明文 LOGIN 命令。

獲取可用資料夾列表

為了將電子郵件傳送到特定資料夾,您需要知道收件箱中目標資料夾的正確名稱。各種電子郵件客戶端顯示的“垃圾郵件”、“回收站”等名稱不一定是您的電子郵件提供商的郵件伺服器中儲存的資料夾的實際名稱。

為了獲取與 git imap-send 一起使用的正確資料夾名稱,您可以執行 git imap-send --list。這將顯示有效資料夾名稱的列表。在 Gmail 帳戶上執行時,此類輸出的示例如下:

* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\HasChildren \Noselect) "/" "[Gmail]"
* LIST (\All \HasNoChildren) "/" "[Gmail]/All Mail"
* LIST (\Drafts \HasNoChildren) "/" "[Gmail]/Drafts"
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
* LIST (\Flagged \HasNoChildren) "/" "[Gmail]/Starred"
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"

在此,您可以觀察到“垃圾郵件”資料夾的正確名稱是 [Gmail]/Spam,而“回收站”資料夾的正確名稱是 [Gmail]/Trash。可以使用類似的邏輯來確定其他資料夾。

示例

使用隧道模式

[imap]
    folder = "INBOX.Drafts"
    tunnel = "ssh -q -C user@example.com /usr/bin/imapd ./Maildir 2> /dev/null"

使用直接模式

[imap]
    folder = "INBOX.Drafts"
    host = imap://imap.example.com
    user = bob
    pass = p4ssw0rd

使用帶 SSL 的直接模式

[imap]
    folder = "INBOX.Drafts"
    host = imaps://imap.example.com
    user = bob
    pass = p4ssw0rd
    port = 123
    ; sslVerify = false
注意
如果您懷疑連線問題的原因是您正在嘗試設定(或已設定)的私有伺服器 example.com 上使用的證書未正確驗證,則在進行故障排除時,您可能需要使用 sslVerify=false

使用 Gmail 的 IMAP 介面

[imap]
    folder = "[Gmail]/Drafts"
    host = imaps://imap.gmail.com
    user = user@gmail.com
    port = 993

Gmail 不允許將您的常規密碼用於 git imap-send。如果您在 Gmail 帳戶上設定了多重身份驗證,則可以生成一個特定於應用的密碼供 git imap-send 使用。請訪問 https://security.google.com/settings/security/apppasswords 來建立它。或者,按照下面的說明使用 OAuth2.0 身份驗證。

注意
如果收到“資料夾不存在”的錯誤,您可能需要使用: folder = "[Google Mail]/Drafts"。您也可以執行 git imap-send --list 來獲取可用資料夾的列表。
注意
如果您的 Gmail 帳戶設定為除英語以外的其他語言,則“草稿”資料夾的名稱將是本地化的。

如果您想使用基於 OAuth2.0 的身份驗證,可以在配置檔案中指定 OAUTHBEARERXOAUTH2 機制。它比使用特定於應用的密碼更安全,並且不需要多重身份驗證。在使用此身份驗證時,您必須在密碼處使用 OAuth2.0 訪問令牌。

[imap]
    folder = "[Gmail]/Drafts"
    host = imaps://imap.gmail.com
    user = user@gmail.com
    port = 993
    authmethod = OAUTHBEARER

使用 Outlook 的 IMAP 介面

與 Gmail 不同,Outlook 只支援基於 OAuth2.0 的身份驗證。此外,它只支援 XOAUTH2 作為機制。

[imap]
    folder = "Drafts"
    host = imaps://outlook.office365.com
    user = user@outlook.com
    port = 993
    authmethod = XOAUTH2

一旦提交準備好傳送,請執行以下命令:

$ git format-patch --cover-letter -M --stdout origin/master | git imap-send

只需確保在電子郵件客戶端中停用行換行(Gmail 的網頁介面無論如何都會換行,所以您需要使用真正的 IMAP 客戶端)。

如果您使用 OAuth2.0 身份驗證,使用憑據助手生成令牌會更方便。可以在 git-send-email[1] 中建議的憑據助手也可以用於 git imap-send

注意

您仍然有責任確保您的電子郵件程式傳送的郵件訊息符合您專案的標準。許多專案不喜歡將補丁作為附件傳送。一些郵件代理會以可能導致補丁失敗的方式轉換補丁(例如,換行,將其作為 format=flowed 傳送)。如果您不檢查這一點,您會收到憤怒的指責。

特別是 Thunderbird 是出了名的有問題。Thunderbird 使用者可以訪問此網頁瞭解更多資訊: https://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email

另請參閱

GIT

Git[1] 套件的一部分