'\" t
.\"     Title: git-imap-send
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 04/20/2026
.\"    Manual: Git Manual
.\"    Source: Git 2.54.0
.\"  Language: English
.\"
.TH "GIT\-IMAP\-SEND" "1" "04/20/2026" "Git 2\&.54\&.0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-imap-send \- Send a collection of patches from stdin to an IMAP folder
.SH "SYNOPSIS"
.sp
.nf
\fIgit imap\-send\fR [\-v] [\-q] [\-\-[no\-]curl] [(\-\-folder|\-f) <folder>]
\fIgit imap\-send\fR \-\-list
.fi
.SH "DESCRIPTION"
.sp
This command uploads a mailbox generated with \fBgit\fR \fBformat\-patch\fR 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 \fBFrom\fR, \fBDate\fR, and \fBSubject\fR in that order\&.
.sp
Typical usage is something like:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git format\-patch \-\-signoff \-\-stdout \-\-attach origin | git imap\-send
.fi
.if n \{\
.RE
.\}
.SH "OPTIONS"
.PP
\-v, \-\-verbose
.RS 4
Be verbose\&.
.RE
.PP
\-q, \-\-quiet
.RS 4
Be quiet\&.
.RE
.PP
\-f <folder>, \-\-folder=<folder>
.RS 4
Specify the folder in which the emails have to saved\&. For example:
\fB\-\-folder=\fR[\fBGmail\fR]\fB/Drafts\fR
or
\fB\-f\fR
\fBINBOX/Drafts\fR\&.
.RE
.PP
\-\-curl
.RS 4
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\&.
.RE
.PP
\-\-no\-curl
.RS 4
Talk to the IMAP server using git\(cqs own IMAP routines instead of using libcurl\&. Ignored if Git was built with the NO_OPENSSL option set\&.
.RE
.PP
\-\-list
.RS 4
Run the IMAP LIST command to output a list of all the folders present\&.
.RE
.SH "CONFIGURATION"
.sp
To use the tool, \fBimap\&.folder\fR and either \fBimap\&.tunnel\fR or \fBimap\&.host\fR must be set to appropriate values\&.
.sp
Everything above this line in this section isn\(cqt included from the \fBgit-config\fR(1) documentation\&. The content that follows is the same as what\(cqs found there:
.PP
imap\&.folder
.RS 4
The folder to drop the mails into, which is typically the Drafts folder\&. For example:
\fBINBOX\&.Drafts\fR,
\fBINBOX/Drafts\fR
or [\fBGmail\fR]\fB/Drafts\fR\&. The IMAP folder to interact with MUST be specified; the value of this configuration variable is used as the fallback default value when the
\fB\-\-folder\fR
option is not given\&.
.RE
.PP
imap\&.tunnel
.RS 4
Command used to set up 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\&.
.RE
.PP
imap\&.host
.RS 4
A URL identifying the server\&. Use an
\fBimap://\fR
prefix for non\-secure connections and an
\fBimaps://\fR
prefix for secure connections\&. Ignored when imap\&.tunnel is set, but required otherwise\&.
.RE
.PP
imap\&.user
.RS 4
The username to use when logging in to the server\&.
.RE
.PP
imap\&.pass
.RS 4
The password to use when logging in to the server\&.
.RE
.PP
imap\&.port
.RS 4
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\&.
.RE
.PP
imap\&.sslverify
.RS 4
A boolean to enable/disable verification of the server certificate used by the SSL/TLS connection\&. Default is
\fBtrue\fR\&. Ignored when imap\&.tunnel is set\&.
.RE
.PP
imap\&.preformattedHTML
.RS 4
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
\fBfalse\fR\&.
.RE
.PP
imap\&.authMethod
.RS 4
Specify the authentication method for authenticating with the 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\(cqre running git\-imap\-send with the
\fB\-\-no\-curl\fR
option, the only supported methods are
\fBPLAIN\fR,
\fBCRAM\-MD5\fR,
\fBOAUTHBEARER\fR
and
\fBXOAUTH2\fR\&. If this is not set then
\fBgit\fR
\fBimap\-send\fR
uses the basic IMAP plaintext
\fBLOGIN\fR
command\&.
.RE
.SH "GETTING A LIST OF AVAILABLE FOLDERS"
.sp
In order to send an email to a specific folder, you need to know the correct name of intended folder in your mailbox\&. The names like "Junk", "Trash" etc\&. displayed by various email clients need not be the actual names of the folders stored in the mail server of your email provider\&.
.sp
In order to get the correct folder name to be used with \fBgit\fR \fBimap\-send\fR, you can run \fBgit\fR \fBimap\-send\fR \fB\-\-list\fR\&. This will display a list of valid folder names\&. An example of such an output when run on a Gmail account is:
.sp
.if n \{\
.RS 4
.\}
.nf
* LIST (\eHasNoChildren) "/" "INBOX"
* LIST (\eHasChildren \eNoselect) "/" "[Gmail]"
* LIST (\eAll \eHasNoChildren) "/" "[Gmail]/All Mail"
* LIST (\eDrafts \eHasNoChildren) "/" "[Gmail]/Drafts"
* LIST (\eHasNoChildren \eImportant) "/" "[Gmail]/Important"
* LIST (\eHasNoChildren \eSent) "/" "[Gmail]/Sent Mail"
* LIST (\eHasNoChildren \eJunk) "/" "[Gmail]/Spam"
* LIST (\eFlagged \eHasNoChildren) "/" "[Gmail]/Starred"
* LIST (\eHasNoChildren \eTrash) "/" "[Gmail]/Trash"
.fi
.if n \{\
.RE
.\}
.sp
Here, you can observe that the correct name for the "Junk" folder is [\fBGmail\fR]\fB/Spam\fR and for the "Trash" folder is [\fBGmail\fR]\fB/Trash\fR\&. Similar logic can be used to determine other folders as well\&.
.SH "EXAMPLES"
.sp
Using tunnel mode:
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "INBOX\&.Drafts"
    tunnel = "ssh \-q \-C user@example\&.com /usr/bin/imapd \&./Maildir 2> /dev/null"
.fi
.if n \{\
.RE
.\}
.sp
Using direct mode:
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "INBOX\&.Drafts"
    host = imap://imap\&.example\&.com
    user = bob
    pass = p4ssw0rd
.fi
.if n \{\
.RE
.\}
.sp
Using direct mode with SSL:
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "INBOX\&.Drafts"
    host = imaps://imap\&.example\&.com
    user = bob
    pass = p4ssw0rd
    port = 123
    ; sslVerify = false
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
You may want to use \fBsslVerify=false\fR while troubleshooting, if you suspect that the reason you are having trouble connecting is because the certificate you use at the private server \fBexample\&.com\fR you are trying to set up (or have set up) may not be verified correctly\&.
.sp .5v
.RE
.sp
Using Gmail\(cqs IMAP interface:
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "[Gmail]/Drafts"
    host = imaps://imap\&.gmail\&.com
    user = user@gmail\&.com
    port = 993
.fi
.if n \{\
.RE
.\}
.sp
Gmail does not allow using your regular password for \fBgit\fR \fBimap\-send\fR\&. If you have multi\-factor authentication set up on your Gmail account, you can generate an app\-specific password for use with \fBgit\fR \fBimap\-send\fR\&. Visit \m[blue]\fBhttps://security\&.google\&.com/settings/security/apppasswords\fR\m[] to create it\&. Alternatively, use OAuth2\&.0 authentication as described below\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
You might need to instead use: \fBfolder\fR \fB=\fR "[\fBGoogle\fR \fBMail\fR]\fB/Drafts\fR" if you get an error that the "Folder doesn\(cqt exist"\&. You can also run \fBgit\fR \fBimap\-send\fR \fB\-\-list\fR to get a list of available folders\&.
.sp .5v
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
If your Gmail account is set to another language than English, the name of the "Drafts" folder will be localized\&.
.sp .5v
.RE
.sp
If you want to use OAuth2\&.0 based authentication, you can specify \fBOAUTHBEARER\fR or \fBXOAUTH2\fR mechanism in your config\&. It is more secure than using app\-specific passwords, and also does not enforce the need of having multi\-factor authentication\&. You will have to use an OAuth2\&.0 access token in place of your password when using this authentication\&.
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "[Gmail]/Drafts"
    host = imaps://imap\&.gmail\&.com
    user = user@gmail\&.com
    port = 993
    authmethod = OAUTHBEARER
.fi
.if n \{\
.RE
.\}
.sp
Using Outlook\(cqs IMAP interface:
.sp
Unlike Gmail, Outlook only supports OAuth2\&.0 based authentication\&. Also, it supports only \fBXOAUTH2\fR as the mechanism\&.
.sp
.if n \{\
.RS 4
.\}
.nf
[imap]
    folder = "Drafts"
    host = imaps://outlook\&.office365\&.com
    user = user@outlook\&.com
    port = 993
    authmethod = XOAUTH2
.fi
.if n \{\
.RE
.\}
.sp
Once the commits are ready to be sent, run the following command:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git format\-patch \-\-cover\-letter \-M \-\-stdout origin/master | git imap\-send
.fi
.if n \{\
.RE
.\}
.sp
Just make sure to disable line wrapping in the email client (Gmail\(cqs web interface will wrap lines no matter what, so you need to use a real IMAP client)\&.
.sp
In case you are using OAuth2\&.0 authentication, it is easier to use credential helpers to generate tokens\&. Credential helpers suggested in \fBgit-send-email\fR(1) can be used for \fBgit\fR \fBimap\-send\fR as well\&.
.SH "CAUTION"
.sp
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\(cqt check this\&.
.sp
Thunderbird in particular is known to be problematic\&. Thunderbird users may wish to visit this web page for more information: \m[blue]\fBhttps://kb\&.mozillazine\&.org/Plain_text_e\-mail_\-_Thunderbird#Completely_plain_email\fR\m[]
.SH "SEE ALSO"
.sp
\fBgit-format-patch\fR(1), \fBgit-send-email\fR(1), mbox(5)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
