git-imap-send(1)
================

NAME
----
git-imap-send - Send a collection of patches from stdin to an IMAP folder


SYNOPSIS
--------
[verse]
'git imap-send' [-v] [-q] [--[no-]curl]


DESCRIPTION
-----------
This command uploads a mailbox generated with 'git format-patch'
into an IMAP drafts folder.  This allows patches to be sent as
other email is when using mail clients that cannot read mailbox
files directly. The command also works with any general mailbox
in which emails have the fields "From", "Date", and "Subject" in
that order.

Typical usage is something like:

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


OPTIONS
-------

-v::
--verbose::
	Be verbose.

-q::
--quiet::
	Be quiet.

--curl::
	Use libcurl to communicate with the IMAP server, unless tunneling
	into it.  Ignored if Git was built without the USE_CURL_FOR_IMAP_SEND
	option set.

--no-curl::
	Talk to the IMAP server using git's own IMAP routines instead of
	using libcurl.


CONFIGURATION
-------------

To use the tool, imap.folder and either imap.tunnel or imap.host must be set
to appropriate values.

Variables
~~~~~~~~~

imap.folder::
	The folder to drop the mails into, which is typically the Drafts
	folder. For example: "INBOX.Drafts", "INBOX/Drafts" or
	"[Gmail]/Drafts". Required.

imap.tunnel::
	Command used to setup a tunnel to the IMAP server through which
	commands will be piped instead of using a direct network connection
	to the server. Required when imap.host is not set.

imap.host::
	A URL identifying the server. Use a `imap://` prefix for non-secure
	connections and a `imaps://` prefix for secure connections.
	Ignored when imap.tunnel is set, but required otherwise.

imap.user::
	The username to use when logging in to the server.

imap.pass::
	The password to use when logging in to the server.

imap.port::
	An integer port number to connect to on the server.
	Defaults to 143 for imap:// hosts and 993 for imaps:// hosts.
	Ignored when imap.tunnel is set.

imap.sslverify::
	A boolean to enable/disable verification of the server certificate
	used by the SSL/TLS connection. Default is `true`. Ignored when
	imap.tunnel is set.

imap.preformattedHTML::
	A boolean to enable/disable the use of html encoding when sending
	a patch.  An html encoded patch will be bracketed with <pre>
	and have a content type of text/html.  Ironically, enabling this
	option causes Thunderbird to send the patch as a plain/text,
	format=fixed email.  Default is `false`.

imap.authMethod::
	Specify authenticate method for authentication with IMAP server.
	If Git was built with the NO_CURL option, or if your curl version is older
	than 7.34.0, or if you're running git-imap-send with the `--no-curl`
	option, the only supported method is 'CRAM-MD5'. If this is not set
	then 'git imap-send' uses the basic IMAP plaintext LOGIN command.

Examples
~~~~~~~~

Using tunnel mode:

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

Using direct mode:

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

Using direct mode with SSL:

.........................
[imap]
    folder = "INBOX.Drafts"
    host = imaps://imap.example.com
    user = bob
    pass = p4ssw0rd
    port = 123
    sslverify = false
.........................


EXAMPLE
-------
To submit patches using GMail's IMAP interface, first, edit your ~/.gitconfig
to specify your account settings:

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

You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error
that the "Folder doesn't exist".

Once the commits are ready to be sent, run the following command:

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

Just make sure to disable line wrapping in the email client (GMail's web
interface will wrap lines no matter what, so you need to use a real
IMAP client).

CAUTION
-------
It is still your responsibility to make sure that the email message
sent by your email program meets the standards of your project.
Many projects do not like patches to be attached.  Some mail
agents will transform patches (e.g. wrap lines, send them as
format=flowed) in ways that make them fail.  You will get angry
flames ridiculing you if you don't check this.

Thunderbird in particular is known to be problematic.  Thunderbird
users may wish to visit this web page for more information:
  http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email

SEE ALSO
--------
linkgit:git-format-patch[1], linkgit:git-send-email[1], mbox(5)

GIT
---
Part of the linkgit:git[1] suite
