git-imap-send
Название
git-imap-send — отправка набора патчей из stdin в папку IMAP
Краткое описание
git imap-send [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>] git imap-send --list
Описание
Эта команда загружает почтовый ящик, созданный с помощью git format-patch, в папку черновиков IMAP. Это позволяет отправлять патчи так же, как и другие письма, при использовании почтовых клиентов, которые не могут напрямую читать файлы почтовых ящиков. Команда также работает с любым обычным почтовым ящиком, в котором письма содержат поля From, Date и Subject именно в таком порядке.
Обычно её используют примерно так:
$ git format-patch --signoff --stdout --attach origin | git imap-send
Параметры
-
-v -
--verbose -
Выводить подробную информацию.
-
-q -
--quiet -
Не выводить сообщения.
-
-f<folder> -
--folder=<folder> -
Указать папку, в которую необходимо сохранить письма. Например:
--folder=[Gmail]/Draftsили-fINBOX/Drafts. -
--curl -
Использовать libcurl для связи с сервером IMAP, кроме случаев, когда подключение выполняется через туннель. Игнорируется, если Git собран без параметра USE_CURL_FOR_IMAP_SEND.
-
--no-curl -
Связываться с сервером IMAP с помощью собственных процедур Git для IMAP, а не libcurl. Игнорируется, если Git собран с параметром NO_OPENSSL.
-
--list -
Выполнить команду IMAP LIST, чтобы вывести список всех имеющихся папок.
Настройка
Чтобы использовать эту утилиту, параметр imap.folder и либо imap.tunnel, либо imap.host должны иметь соответствующие значения.
Содержимое этой секции до данной строки не включено из документации git-config[1]. Далее приведено то же содержимое, что и в ней:
-
imap.folder -
Папка, в которую помещаются письма; обычно это папка черновиков. Например:
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 -
Номер порта сервера, к которому следует подключиться. По умолчанию используется порт 143 для узлов
imap://и порт 993 для узловimaps://. Игнорируется, если задан параметр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 или git-imap-send запущен с параметром
--no-curl, поддерживаются только способыPLAIN,CRAM-MD5,OAUTHBEARERиXOAUTH2. Если этот параметр не задан,gitimap-sendиспользует командуLOGINбазового текстового протокола IMAP.
Получение списка доступных папок
Чтобы отправить письмо в определённую папку, нужно знать её точное имя в почтовом ящике. Названия вроде «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. Аналогичным образом можно определить имена и других папок.
Примеры
Использование режима туннеля:
[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 | Примечание | При поиске неисправностей можно использовать sslVerify=false, если вы подозреваете, что проблема с подключением вызвана тем, что сертификат, используемый на частном сервере example.com, который вы пытаетесь настроить (или уже настроили), может проверяться некорректно. |
Использование интерфейса IMAP Gmail:
[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", если появляется ошибка «Folder doesn’t exist» («Папка не существует»). Чтобы получить список доступных папок, также можно выполнить команду git imap-send --list. |
| Примечание | Если для вашей учётной записи 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 Использование интерфейса IMAP Outlook:
В отличие от 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-format-patch[1], git-send-email[1], mbox(5)
imap-send
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-imap-send