SYNOPSIS

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

DESCRIPTION

このコマンドは、 git format-patch で生成された mailbox を IMAP ドラフトフォルダーにアップロードします。これにより、mailbox ファイルを直接読み取れないメールクライアントを使用している場合でも、他のメールと同様にパッチを送信できます。このコマンドは、電子メールのフィールドが FromDateSubject の順で並んでいる一般的な mailbox でも動作します。

一般的な使用法は以下のようになります:

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

OPTIONS

-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

libcurl を使用する代わりに、git独自のIMAPルーチンを使用してIMAPサーバーと通信します。Gitが NO_OPENSSL オプションを設定してビルドされた場合は無視されます。

--list

IMAP の LIST コマンドを実行し、存在するすべてのフォルダーの一覧を出力します。

CONFIGURATION

このツールを使用するには、 imap.folder と、 imap.tunnel または imap.host のいずれかを、適切な値に設定する必要があります。

このセクションのこの行より上にあるものはすべて、 git-config(1) ドキュメントには含まれていません。 以下の内容に関しては、git-config(1) ドキュメント にあるものと同一です。

imap.folder

メールを投入するフォルダーで、 通常は下書き(Drafts)フォルダーです。 例えば: INBOX.Drafts, INBOX/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はパッチを plane/text の format=fixed メールとして送信します。デフォルトは false です。

imap.authMethod

IMAP サーバーとの認証に使用する認証方式を指定します。 Git が NO_CURL オプション付きでビルドされている場合、 または curl のバージョンが 7.34.0 未満の場合、 または git-imap-send を --no-curl オプション付きで実行している場合、 サポートされる方式は PLAINCRAM-MD5OAUTHBEARERXOAUTH2 のみです。 この設定がされていない場合、 git imap-send は基本的な IMAP 平文の LOGIN コマンド(the basic IMAP plaintext LOGIN command)を使用します。

GETTING A LIST OF AVAILABLE FOLDERS

特定のフォルダーに電子メールを送信するには、mailbox 内で意図したフォルダーの正しい名前を知る必要があります。さまざまなメールクライアントで表示される "Junk" や "Trash" などの名前は、メールプロバイダーのメールサーバーに保存されているフォルダーの実際の名前と一致するとは限りません。

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"

ここでは、"Junk" フォルダーの正しい名前が [Gmail]/Spam であり、"Trash" フォルダーの正しい名前が [Gmail]/Trash であることが分かります。同様の考え方で、他のフォルダーも判断できます。

EXAMPLES

トンネル(tunnel)モード使用:

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

直接(direct)モード使用:

[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
Note
接続の問題が、セットアップしようとしている(またはセットアップ済の)プライベートサーバー 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 認証を使用してください。

Note
"Folder doesn’t exist" というエラーが出た場合は、代わりに folder = "[Google Mail]/Drafts" を使用する必要があるかもしれません。利用可能なフォルダーの一覧を取得するには、git imap-send --list を実行することもできます。
Note
Gmailアカウントが英語以外の言語に設定されている場合、 "Drafts" フォルダの名前がローカライズされます。

OAuth2.0 ベースの認証を使用したい場合は、設定で OAUTHBEARER または XOAUTH2 のメカニズムを指定できます。これはアプリ固有のパスワードを使うよりも安全であり、多要素認証を必須にもしません。この認証を使用する場合、パスワードの代わりに 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のWebインターフェイスは何があっても行を折り返すため、実際のIMAPクライアント(real IMAP client)を使用する必要があります)。

OAuth2.0 認証を使用している場合は、認証情報ヘルパーを使ってトークンを生成するほうが簡単です。git-send-email(1) で提案されている認証情報ヘルパーは、git imap-send にも使用できます。

CAUTION

電子メールプログラムによって送信される電子メールメッセージがプロジェクトの基準を満たしていることを確認するのは、依然としてあなたの責任です。多くのプロジェクトは、パッチを電子メールに添付することを好みません。一部のメールエージェントは、パッチを失敗させる方法でパッチを変換します(たとえば、行を折り返し、format=flowed として送信します)。これをチェックしておかないと、怒りの炎があなたを襲います。

特に Thunderbird は問題があることが知られています。 Thunderbird のユーザーは下記Webページにアクセスして詳細を確認できます: https://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email

SEE ALSO

GIT

Part of the git(1) suite