GIT-IMAP-SEND(1) دستورات عمومی کاربر GIT-IMAP-SEND(1)

git-imap-send - ارسال مجموعه‌ای از وصله‌ها از ورودی استاندارد به یک پوشه IMAP

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

این دستور یک صندوق پستی (mailbox) تولیدشده با git format-patch را در پوشه پیش‌نویس‌های (drafts) یک سرور 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، مگر اینکه از طریق تونل به آن متصل شوید. اگر گیت بدون فعال بودن گزینه USE_CURL_FOR_IMAP_SEND کامپایل شده باشد، نادیده گرفته می‌شود.

--no-curl

برقراری ارتباط با سرور IMAP با استفاده از روال‌های داخلی IMAP خود گیت به‌جای libcurl. اگر گیت با گزینه NO_OPENSSL کامپایل شده باشد، نادیده گرفته می‌شود.

--list

اجرای دستور LIST در پروتکل IMAP برای خروجی دادن فهرستی از تمام پوشه‌های موجود.

برای استفاده از این ابزار، باید imap.folder و یکی از گزینه‌های imap.tunnel یا imap.host روی مقادیر مناسب تنظیم شده باشند.

تمام موارد بالای این خط در این بخش از مستندات git-config(1) گنجانده نشده است. محتوایی که در ادامه می‌آید همان چیزی است که در آنجا یافت می‌شود:

imap.folder

پوشه‌ای که ایمیل‌ها باید در آن قرار گیرند، که معمولاً پوشه Drafts است. برای مثال: INBOX.Drafts، INBOX/Drafts یا [Gmail]/Drafts. پوشه IMAP برای تعامل الزامی است و باید مشخص شود؛ مقدار این متغیر پیکربندی به عنوان مقدار پیش‌فرض جایگزین در زمانی که گزینه --folder داده نشده باشد، استفاده می‌شود.

imap.tunnel

دستوری که برای ایجاد تونل به سرور IMAP استفاده می‌شود و دستورات به‌جای اتصال مستقیم شبکه‌ای به سرور، از طریق آن هدایت (pipe) می‌شوند. در صورتی که 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 وصله را به صورت یک ایمیل plain/text با format=fixed ارسال کند. مقدار پیش‌فرض false است.

imap.authMethod

مشخص کردن روش احراز هویت با سرور IMAP. اگر گیت با گزینه NO_CURL کامپایل شده باشد، یا نسخه curl شما قدیمی‌تر از 7.34.0 باشد، یا git-imap-send را با گزینه --no-curl اجرا می‌کنید، تنها روش‌های پشتیبانی‌شده عبارتند از PLAIN، CRAM-MD5، OAUTHBEARER و XOAUTH2. اگر این گزینه تنظیم نشده باشد، git imap-send از دستور اولیه و متن‌ساده IMAP یعنی LOGIN استفاده می‌کند.

برای ارسال ایمیل به یک پوشه خاص، باید نام صحیح پوشه مورد نظر را در صندوق پستی خود بدانید. نام‌هایی مانند "Junk"، "Trash" و غیره که توسط کلاینت‌های ایمیل مختلف نمایش داده می‌شوند، لزوماً نام‌های واقعی پوشه‌های ذخیره‌شده در سرور ارائه‌دهنده ایمیل شما نیستند.

به منظور دریافت نام صحیح پوشه برای استفاده با git imap-send، می‌توانید دستور git imap-send --list را اجرا کنید. این کار فهرستی از نام‌های معتبر پوشه‌ها را نمایش می‌دهد. یک نمونه از چنین خروجی هنگام اجرا روی یک حساب جیمیل به این صورت است:

* 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 جیمیل:

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

جیمیل اجازه استفاده از گذرواژه معمولی شما را برای git imap-send نمی‌دهد. اگر در حساب جیمیل خود احراز هویت چندعاملی را تنظیم کرده‌اید، می‌توانید یک گذرواژه مخصوص برنامه (app-specific password) برای استفاده با git imap-send تولید کنید. برای ایجاد آن به https://security.google.com/settings/security/apppasswords مراجعه کنید. متناوباً، می‌توانید از احراز هویت بر پایه OAuth2.0 همان‌طور که در ادامه توضیح داده شده است استفاده کنید.


یادداشت

اگر خطایی دریافت کردید مبنی بر اینکه "Folder doesn’t exist" (پوشه وجود ندارد)، ممکن است لازم باشد در عوض از folder = "[Google Mail]/Drafts" استفاده کنید. همچنین می‌توانید دستور git imap-send --list را برای دریافت فهرست پوشه‌های موجود اجرا نمایید.


یادداشت

اگر حساب جیمیل شما روی زبانی غیر از انگلیسی تنظیم شده باشد، نام پوشه "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):

برخلاف جیمیل، اوت‌لوک فقط از احراز هویت مبتنی بر 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

فقط مطمئن شوید که شکستن خطوط (line wrapping) را در کلاینت ایمیل غیرفعال کرده‌اید (رابط وب جیمیل در هر صورت خطوط را می‌شکند، بنابراین باید از یک کلاینت واقعی IMAP استفاده کنید).

در صورتی که از احراز هویت OAuth2.0 استفاده می‌کنید، استفاده از دستیارهای اعتبارسنجی (credential helpers) برای تولید توکن‌ها آسان‌تر است. دستیارهای اعتبارنامه‌ای که در git-send-email(1) پیشنهاد شده‌اند، می‌توانند برای git imap-send نیز استفاده شوند.

همچنان مسئولیت این موضوع با شماست که اطمینان حاصل کنید پیام ایمیل ارسال‌شده توسط برنامه ایمیل شما با استانداردهای پروژه مطابقت دارد. بسیاری از پروژه‌ها دوست ندارند وصله‌ها به صورت ضمیمه (attachment) ارسال شوند. برخی از نرم‌افزارهای ایمیل وصله‌ها را به روش‌هایی تغییر می‌دهند (مانند شکستن خطوط، ارسال آن‌ها به صورت 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)

بخشی از مجموعه git(1)

2026-06-29 Git 2.55.0