Spec-Zone.ru › Git

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 или -f INBOX/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. Если этот параметр не задан, git imap-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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API