فایلها، درونبریها و تنظیمات
همهٔ فرمانهای فایلهایی که صندوق پستی نگه میدارد، درونبری یک صندوق پستی قدیمی یا یک حساب Resend، تقویمی که در نامهها یافت میشود، و تنظیمات فضای کاری و هر نشانی.
نمای کلی
پنج فضای نام آنچه را پیرامون خود نامه است پوشش میدهند. openemail files همان صفحهٔ فایلهاست: هر پیوست فرستادهشده و دریافتشده و هر فایل بارگذاریشده، با بایتهایش و پیوندهای دانلودی که با آنها بیرون رفته است. openemail imports یک صندوق پستی قدیمی را به یک نشانی میآورد، و openemail provider-imports یک حساب Resend را منتقل میکند. openemail calendar رویدادهای یافتشده در نامهها را میخواند، و openemail settings ترجیحات صندوق پستی و امضا و ردیابی هر نشانی را میخواند و تغییر میدهد.
- هر شناسه میگوید به چه چیزی اشاره دارد:
file_برای فایل،imp_برای درونبری صندوق پستی،pimp_برای درونبری Resend وcal_برای رویداد تقویم، هر کدام با 24 نویسهٔ هگز پس از آن. پیوند دانلود شناسهٔ خودش را دارد، ازfiles list-linksیاfiles create-link. --address-idدر یک درونبری شناسهٔ یک نشانی است، ازopenemail domains list-addresses <id>، نه خود نشانی.- فضاهای نام به
file،import،provider-importیاproviderImports، وsettingهم پاسخ میدهند. فعلها هر جا نام مستعار معمول داشته باشند آن را میپذیرند:lsبه جایlist،showوviewبه جایget،newوaddبه جایcreate،editبه جایsettings update، وrm،delوremoveبه جایfiles delete. - هیچکدام از این فرمانها از ورود با مرورگر کد تأیید هویت نمیخواهد. آنهایی که چیزی را برای همیشه تغییر میدهند از شما تأیید میخواهند، و
--yesبه جای اسکریپت پاسخ میدهد. openemail <command> --helpهر آرگومان و پرچم را با نوعش، دامنهٔ مجوزی که فراخوانی لازم دارد، متد و مسیرش و آنچه برمیگردد فهرست میکند. برای همان صفحه بهصورت داده،--jsonرا اضافه کنید.
فایلها
openemail files همهٔ فایلهایی را که صندوق پستی نگه میدارد میخواند و مدیریت میکند: پیوستهای رسیده، پیوستهای فرستادهشده و فایلهایی که در صفحهٔ فایلها بارگذاری شدهاند. openemail open files همان صفحه را در برنامهٔ وب باز میکند.
| فرمان | چه میکند |
|---|---|
| openemail files list | فهرست یک صفحه از فایلها با نام، نوع، اندازه، جهت، نشانیای که هر کدام به آن رسیده و اینکه میتوان حذفش کرد یا نه |
| openemail files get <id> | خواندن یک فایل، با رشته و پیامی که به آن تعلق دارد، و usage و deletable آن |
| openemail files stats | شمردن فایلها و بایتهایی که اشغال میکنند، به تفکیک دریافتی، فرستاده و بارگذاریشده، با نوعها و نشانیهای برتر، 30 روز گذشته و پیوندهایی که هنوز کار میکنند |
| openemail files download <id> | دریافت بایتهای یک فایل دقیقاً همانطور که ذخیره شده، در --out <file> یا روی stdout وقتی به لوله داده شود |
| openemail files list-links <id> | فهرست پیوندهای دانلودی که فایل با آنها بیرون رفته، تازهترین در ابتدا، با اینکه هر کدام چند بار دریافت شده و آیا ابطال شده است |
| openemail files create-link <id> | انتشار فایل روی یک پیوند دانلود عمومی تازه که بدون ورود باز میشود |
| openemail files revoke-link <id> <link-id> | متوقف کردن همیشگی یک پیوند عمومی، در نامههایی که پیشتر فرستاده شدهاند هم. از شما تأیید میخواهد |
| openemail files upload <data> | بارگذاری یک فایل از یک مسیر، یا از stdin با -، تا 100 MB |
| openemail files delete <id> | حذف همیشگی فایل بارگذاریشدهای که چیزی به آن وابسته نیست. از شما تأیید میخواهد |
| openemail files delete-many <ids...> | حذف تا 100 فایل در یک فراخوانی و گزارش آنهایی که نگه داشته شدند و آنهایی که پیدا نشدند. از شما تأیید میخواهد |
files listبا--q(نام و نوع)،--kind(image،pdf،audio،videoیاtext)،--direction(inbound،outboundیاuploaded)،--address،--sinceو--untilمحدود میکند و با--sort(newest،oldest،largestیاname) مرتب میکند.--sinceو--untilیک تاریخ یا تاریخ و زمان به قالب ISO 8601 میگیرند:--sinceلحظهٔ خودش را شامل میشود و--untilپیش از آن میایستد.- فقط فایل بارگذاریشدهای را که چیزی به آن وابسته نیست میتوان حذف کرد، و
deletableاین را از پیش میگوید.usageمیگوید چه چیزی هر فایل دیگری را نگه میدارد:received،sent،linkedبرای فایل بارگذاریشدهای که پیوند دانلودش هنوز کار میکند، یاscheduledبرای فایلی که به پیامی پیوست شده که هنوز نرفته است.deleteاینها را با 409file_in_useرد میکند.delete-manyهر چه را بتواند حذف میکند، بقیه را با دلیل هر کدام درkeptفهرست میکند و شناسههای ناشناخته را درmissing. uploadفایل مسیری را که میدهید میخواند و آن را با نام همان فایل و نوعی که پسوندش نشان میدهد ذخیره میکند.--filenameو--content-typeاینها را بازنویسی میکنند. از stdin،-به--filenameنیاز دارد و بدون--content-typeنوعapplication/octet-streamاست. بارگذاری تا 10 دقیقه صبر میکند که--timeout-msآن را تغییر میدهد.- شناسهای که
uploadبرمیگرداند فایل را بهصورت{ "fileId": "…" }درopenemail emails send --attachmentsبه یک ارسال پیوست میکند، و فایلِ بزرگتر از سقف درونخطی 5 MB اینطور بیرون میرود. - فایل خالی 400
upload_emptyاست، برنامه یا اسکریپت (بر اساس نامش) 400upload_dangerousو فایل بزرگتر از 100 MB یک 413upload_too_large. هر فضای کاری تا 10 GB بارگذاری نگه میدارد و در هر ساعت 500 بارگذاری میپذیرد. downloadدر ترمینال به--out <file>نیاز دارد و بدون آن با کد خروج2متوقف میشود. وقتی به لوله داده شود بایتها به stdout میروند، و--out -هم stdout را میخواهد. کل فایل در حافظه نگه داشته میشود.create-linkدر هر فراخوانی پیوند تازهای با شمارندهٔ دانلود خودش میسازد، و پیوند تا وقتی ابطال یا فایل حذف نشده کار میکند. روی دامنهٔ فایلهای--domainقرار میگیرد اگر آن دامنه یکی داشته باشد، مانندfiles.acme.com، وگرنه روی دامنهٔ فایلهای نشانیِ فایل، وگرنه روی نشانی API. برنامه یا اسکریپت با 422file_unshareableرد میشود.- تکرار
revoke-linkبیخطر است: پیوندی که از پیش ابطال شده بدون تغییر برمیگردد. - کلید یا ورودی که به نشانیها یا دامنههای مشخصی محدود است فقط فایلهایی را میبیند که به آنها رسیدهاند، هرگز فایلهایی را که برای کل فضای کاری بارگذاری شدهاند، و بارگذاریهای خودش به نخستین نشانیای که دارد تعلق میگیرند.
- نمایهٔ فایلها از روز عرضهاش آغاز میشود. پیوستهای قدیمیتر هنوز روی پیامهایشان هستند، جایی که
openemail threads list-attachments <id>آنها را میخواند.
درونبری صندوق پستی
openemail imports یک صندوق پستی قدیمی را به یک نشانی میآورد: بایگانیهای Google Takeout، فایلهای .mbox از Apple Mail، Thunderbird و بیشتر برنامههای رومیزی، فایلهای .eml، و بایگانیهای .zip یا .tgz که هر کدام از اینها را دارند، تا 100 GB برای هر فایل و 50 فایل برای هر درونبری. رشتهها، تاریخها و برچسبها منتقل میشوند. نامهٔ درونبریشده بیصداست: هیچ قاعده، بازارسال، اعلان، خلاصه یا وبهوکی اجرا نمیکند.
import-files همان است که بیشتر مردم لازم دارند: درونبری را میسازد، هر فایل را با یک سطر پیشرفت تکهتکه بارگذاری میکند و آن را آغاز میکند. فعلهای دیگر همان گامها یکییکیاند، برای تمام کردن بارگذاریای که متوقف شده یا برای هدایتش به دست خودتان. create نقشه، chunkBytes و chunks هر فایل را برمیگرداند، upload-chunk یک تکه میفرستد، upload-state میگوید کدام تکهها رسیدهاند، و start درونبری را در صف میگذارد. openemail open imports همان درونبریها را در برنامهٔ وب نشان میدهد.
| فرمان | چه میکند |
|---|---|
| openemail imports list | فهرست یک صفحه از درونبریهای فضای کاری، تازهترین در ابتدا، با وضعیت، بایتهای خواندهشده و شمارشها. --address-id یک نشانی را نگه میدارد |
| openemail imports get <id> | خواندن یک درونبری با وضعیت، پیشرفت و شمارشهایش. آن را پیاپی بپرسید تا completed، failed یا cancelled شود |
| openemail imports create --address-id <value> --files <json|@file|-> | ساختن یک درونبری از فهرستی از { name, bytes } و گرفتن نقشهٔ بارگذاریاش، با status برابر uploading |
| openemail imports upload-state <id> | برای هر فایل، شمارههای تکههایی که از پیش ذخیره شدهاند، تا بارگذاری متوقفشده فقط آنچه کم است را بفرستد |
| openemail imports upload-chunk <id> <file> <chunk> <data> | بارگذاری یک تکه از یک فایل، از یک مسیر یا از stdin با -. فرستادن دوبارهٔ یک تکه آن را جایگزین میکند |
| openemail imports start <id> | بررسی اینکه همهٔ تکهها رسیدهاند، شناختن قالب هر فایل و گذاشتن درونبری در صف |
| openemail imports cancel <id> | متوقف کردن درونبری در نقطهٔ بازبینی بعدیاش. نامههایی که پیشتر درونبری شدهاند میمانند. از شما تأیید میخواهد |
| openemail imports list-failures <id> | فهرست هر پیام یا درایهٔ بایگانی که منتقل نشد، با دلیلش |
| openemail imports delete-upload <id> | حذف فایلهای بارگذاریشده. نامههایی که پیشتر درونبری شدهاند میمانند. از شما تأیید میخواهد |
| openemail imports import-files --address-id <value> --files <path> | ساختن، بارگذاری و آغاز یک درونبری با یک فرمان، و بازگشت بهمحض قرار گرفتن در صف |
- نشانی باید روی دامنههای خود فضای کاری باشد و کلید یا ورود اجازهٔ کار از طرف آن را داشته باشد. برای هر نشانی فقط یک درونبری اجرا میشود: درونبری دیگر وقتی یکی در صف یا در حال اجراست 409
already_runningاست. import-filesپرچم--filesرا یک بار برای هر فایل میگیرد، یا چند مسیر جداشده با ویرگول، و هر کدام را با نام فایل خودش میفرستد.--optionsمقداری JSON مانند{"keepInbox":false,"includeSpam":true}میگیرد. درcreateهمین سه کلید هستند:--options-keep-inbox،--options-include-spamو--options-include-trash، که هر کدام با--no-در جلویش خاموش میشود، مانند--no-options-keep-inbox.keepInboxبهصورت پیشفرض روشن است، پس نامههای صندوق ورودی قدیمی با وضعیت نخواندهشان در صندوق ورودی مینشینند. خاموشش همه چیز را زیر بایگانی میگذارد. هرزنامه و زباله جا میمانند مگر اینکه آنها را هم بگنجانید.createپرچم--filesرا بهصورت JSON میگیرد، درونخطی یا از یک فایل با@path، و هرbytesباید دقیقاً اندازهٔ فایلی باشد که سپس بارگذاری میکنید.- هر تکه دقیقاً به طول
chunkBytesاست، به جز آخرین تکهٔ یک فایل، و تکهای با طول نادرست 400bad_chunkاست.startفایلی را که تکههایی کم دارد با 412missing_chunksرد میکند، و فایلی را که نه بایگانی است و نه صندوق پستی با 400unsupported_file. روی درونبریای که ازuploadingگذشته است، درونبری را بدون تغییر برمیگرداند. - اگر تکهای پس از تلاشهای دوبارهاش همچنان شکست بخورد،
import-filesمیایستد و درونبری درuploadingمیماند. بلوک زیر تکههای کمشدهٔ فایل نخست را میفرستد و آن را آغاز میکند. - یک درونبری
processedBytesازtotalBytesوcountsرا باseen،imported،duplicate،filtered،failedوthreadsگزارش میدهد.lastErrorفقط وقتی تنظیم میشود کهstatusبرابرfailedباشد. list-failuresبه هر شکست یکreasonمیدهد:too-large(بیش از 50 MB)،unparseable،no-date،storage-error،unreadable-entry،encrypted-entryیاarchive-limit، با موضوع و فرستنده هر جا که خواندنی بودهاند.cancelروی درونبری تمامشده 409not_cancellableاست.delete-uploadدرونبریای را که هنوز در حال بارگذاری است لغو میکند، و درونبری در صف یا در حال اجرا را با 409still_runningرد میکند، پس نخست آن را لغو کنید.
openemail imports get "$import_id" --json > import.jsonopenemail imports upload-state "$import_id" --json > state.jsonchunk=$(jq .chunkBytes import.json)chunks=$(jq '.files[0].chunks' import.json)for i in $(seq 0 $((chunks - 1))); do jq -e --argjson i "$i" '.received[0] | any(. == $i)' state.json > /dev/null && continue dd if=takeout-001.zip bs="$chunk" skip="$i" count=1 2> /dev/null | openemail imports upload-chunk "$import_id" 0 "$i" -doneopenemail imports start "$import_id"درونبری از Resend
openemail provider-imports یک فضای کاری را با یک کلید API کاملدسترسی Resend از Resend منتقل میکند. توقیفها دلیلشان را نگه میدارند، بخشها فهرست مخاطب میشوند، مخاطبان مشترک با نامهایشان میرسند، و قالبها بهصورت قالبهای HTML با متغیرهای اعلامشده میرسند. وبهوکها خاموش ثبت میشوند، چون تحویلها اینجا به شکل دیگری امضا میشوند. کلید امضا یا توکن نمیتواند Resend را ترک کند، پس دامنهها و کلیدهای API به جای آن بهصورت فهرست بررسی در گزارش برمیگردند.
| فرمان | چه میکند |
|---|---|
| openemail provider-imports inspect <api-key> | شمردن آنچه حساب Resend دارد، برای هر منبع، پیش از درونبری. چیزی ذخیره نمیشود و کلید نگه داشته نمیشود |
| openemail provider-imports create --resend-key <value> --resources <a,b> | گذاشتن درونبری منبعهایی که نام میبرید در صف |
| openemail provider-imports list | فهرست یک صفحه از درونبریها از ارائهدهندگان ارسال، تازهترین در ابتدا، هر کدام با گزارشش |
| openemail provider-imports get <id> | خواندن یک درونبری: وضعیتش، گامی که در آن است و گزارش تا اینجا |
| openemail provider-imports cancel <id> | متوقف کردن درونبری و پاک کردن کلید Resend. آنچه پیشتر منتقل شده میماند. از شما تأیید میخواهد |
- کلید Resend را بهصورت
@pathبدهید تا از یک فایل خوانده شود، یا-تا از stdin خوانده شود، تا از تاریخچهٔ پوسته و فهرست فرایندها دور بماند. کلیدی که در خط فرمان تایپ شود همچنان کار میکند، با یک هشدار.--dry-runبدنه را با کلید پوشاندهشده چاپ میکند. --resourcesهر یک ازsuppressions،audiences،contacts،templates،webhooks،domainsوapi-keysرا میگیرد، جداشده با ویرگول یا تکرارشده.- کلیدی که فقط برای ارسال است 400
restricted_keyاست. برای درونبری یک کلید کاملدسترسی در Resend بسازید و پس از آن ابطالش کنید. inspectنخستین صفحهٔ هر منبع را میخواند وcountsرا برمیگرداند، یک{ count, more }برای هر منبع، باmoreتنظیمشده هر جا منبعی از صفحهٔ نخستش فراتر برود.- در هر زمان فقط یک درونبری برای هر فضای کاری اجرا میشود و دومی 409
already_runningاست. دو بار اجرای همان درونبری چیزی را تکرار نمیکند. کلید فقط تا وقتی درونبری اجرا میشود رمزنگاریشده نگه داشته میشود، و وقتی پایان یابد، شکست بخورد یا لغو شود پاک میشود. - مخاطبانی که در Resend اشتراکشان را لغو کردهاند کنار گذاشته و در
report.contacts.unsubscribedشمرده میشوند. report.domainsهر دامنهٔ Resend را با یکstateفهرست میکند:absentوقتی در این فضای کاری نیست،addedوقتی هست اما تأیید نشده، وverified، با رکوردهایی که در Resend داشت. دامنهٔ ناموجود را باopenemail domains createاضافه کنید.report.apiKeysکلیدهایی را نام میبرد که باید باopenemail keys createدوباره ساخته شوند.- با ورود از طریق مرورگر فقط مالک فضای کاری میتواند از این فرمانها استفاده کند و عضو 403
owner_onlyمیگیرد. کلید API مشمول این نیست. کلید یا ورودی که به نشانیها یا دامنههای مشخصی محدود است نمیتواند درونبری را وارسی کند یا بسازد، چون فهرستهای مخاطب، توقیفها و قالبها از آنِ کل فضای کاریاند. createدامنهٔ مجوز هر منبعی را که میآورد هم لازم دارد:audiences:writeبرای فهرستهای مخاطب،contacts:writeوaudiences:writeبرای مخاطبان،templates:writeبرای قالبها،webhooks:writeبرای وبهوکها وdomains:readبرای دامنهها.
تقویم
openemail calendar رویدادهای تقویمی یافتشده در نامهها را میخواند. هر سه فرمان فقط میخوانند. list-events هر رویداد را در بازهای که میدهید به رخدادهایش باز میکند، پس یک جلسهٔ هفتگی برای هر هفته یک ردیف است، و get-event و get-event-ics یک رویداد را کامل میخوانند. openemail open calendar تقویم را در برنامهٔ وب باز میکند.
| فرمان | چه میکند |
|---|---|
| openemail calendar list-events --from <when> --to <when> | فهرست یک صفحه از رخدادها میان دو لحظه، مرتبشده بر اساس زمان آغاز، که هر کدام با eventId به رویدادش اشاره میکند |
| openemail calendar get-event <id> | خواندن یک رویداد با شرکتکنندگان و پاسخهایشان، قاعدهٔ تکرار، تاریخهای مستثنا، برگزارکننده و یادآوریها |
| openemail calendar get-event-ics <id> | دانلود رویداد بهصورت یک سند iCalendar، چاپشده یا نوشتهشده در --out <file> |
--fromو--toتاریخ و زمانهایی به قالب ISO 8601 هستند، مانند2026-10-01T00:00:00Z.--toباید پس از--fromو حداکثر 366 روز بعد از آن باشد، چون یک سری تکرارشونده پایانی ندارد که تا آن فهرست شود. کرانِ ناموجود 422invalid_parameterاست. کرانی که تجزیه نشود، بازهٔ وارونه یا بیش از حد بلند، یا منطقهٔ زمانی ناشناخته 400invalid_parameterاست.--timezoneیک منطقهٔ IANA مانندEurope/Londonاست، و وقتی نباشد UTC. رویدادهایی را که بدون منطقهٔ زمانی خودشان ذخیره شدهاند باز میکند، که تعیین میکند یک رویداد تمامروز در کدام روز میافتد.get-eventوget-event-icsمقدارeventIdیک رخداد را میگیرند، نهuidدر iCalendar. یک سری تکرارشونده یک رویداد است، پسstartوendآن نخستین نمونه را شرح میدهند.- رویدادهای لغوشده هم با
statusبرابرCANCELLEDفهرست میشوند.myPartstatپاسخی است که برای هر نشانی فضای کاری روی دامنههای خودش ثبت شده، و وقتی هیچکدام شرکتکننده نباشند null است. - صفحهبندی با
--cursorو همان بازه ادامه مییابد. کلید یا ورودی که به نشانیهای مشخصی محدود است فقط رویدادهایی را میبیند که یکی از آنها برگزار میکند یا در آن شرکت دارد، و هر رویداد دیگری 404 است. get-event-icsمقدارMETHOD:PUBLISHرا اعلام میکند، پس درونبری آن رویداد را همانطور که هست نشان میدهد به جای اینکه پذیرفتن یا رد کردن را پیشنهاد دهد. رویدادهای زماندار بهصورت لحظههای UTC و رویدادهای تمامروز بهصورت تاریخ نوشته میشوند.DTSTAMPزمان دانلود است، پس دو دانلود از رویدادی تغییرنیافته در همان سطر با هم فرق دارند.
تنظیمات
openemail settings ترجیحات صندوق پستی را میخواند و تغییر میدهد، مانند منطقهٔ زمانی، زبان، قالب زمان و فهرستهای مسدودی. چهار تنظیم به یک نشانی تعلق دارند نه به فضای کاری: signature، openEmailSignature (پانویس OpenEmail)، trackOpens و trackClicks. نشانی را با --address نام ببرید، یا *@acme.com برای catch-all یک دامنه.
| فرمان | چه میکند |
|---|---|
| openemail settings get | خواندن همهٔ تنظیمات با مقدارهای پیشفرضِ پرشده. با --address، چهار تنظیم مخصوص نشانی همانطور خوانده میشوند که ارسالی از آن نشانی آنها را تعیین میکند |
| openemail settings update | تغییر تنظیماتی که میدهید و نگه داشتن بقیه. پاسخ همهٔ تنظیمات است که پس از نوشتن دوباره خوانده شدهاند |
- بدون
--address،getچهار تنظیم مخصوص نشانی را بهصورت پیشفرضهای داخلی میخواند: بدون امضا، پانویس OpenEmail روشن، و ردیابی باز شدن و پیوند روشن. با آن، اینها از مقدارهای خود نشانی میآیند، سپس از catch-all دامنهاش وقتی catch-all آن نشانی را گرفته باشد، سپس از پیشفرضها. نشانیِ بعلاوهداری که تنظیمات خودش را ندارد تنظیمات نشانی پایهاش را میخواند. - بدون
--address،updateپرچمهای--signature،--open-email-signature،--track-opensو--track-clicksرا با 422address_requiredرد میکند و چیزی نمینویسد. با آن،updateفقط همین چهار را میپذیرد و هر چیز دیگری 422not_per_addressاست. نشانی باید در همین فضای کاری باشد، یا*@domainبرای یک دامنهٔ تأییدشده در اینجا با catch-all روشن. - کلیدها با
--no-در جلویشان خاموش میشوند:--no-open-email-signature،--no-track-opensو--no-track-clicks. --signatureیک HTML حداکثر 150,000 نویسهای است که هنگام نوشتن پاکسازی میشود، پس آنچه برمیگردد همان است که فرستاده خواهد شد. رشتهٔ خالی آن را برمیدارد. اینکه یک ارسال آن را اضافه کند یا نه به خود ارسال بستگی دارد:--signatureرا درopenemail emails send --helpببینید.- پرچمها فیلدهای رایج را پوشش میدهند.
--dataهر تنظیم ذخیرهشدهای را بهصورت JSON میگیرد، درونخطی، از یک فایل با@pathیا از stdin با-، مانندtimeFormat،weekStart،undoSendEnabled،blockedSendersیاblockedDomains. کلیدهایی که تنظیمات نمیشناسند بدون خطا کنار گذاشته میشوند، و کلید شناختهشده با نوع نادرست 422invalid_parameterاست. - فهرستی مانند
blockedDomainsیکجا جایگزین میشود، پس نخست آن را بخوانید و با تغییرتان پس بفرستید، همانطور که نمونهٔ زیر میکند. درایهٔ فهرست مسدودی که کوتاهتر از آن است که قاعده باشد 422blocklist_entry_too_broadاست. --timezoneو--languageهمانطور که داده شوند بدون بررسی ذخیره میشوند، پس منطقه یا کد زبان را پیش از فرستادن بررسی کنید.- فیلدهای حریم خصوصی،
externalImages،trustedSenders،blockedSenders،blockedDomains،blockedWordsوuseDefaultBlockedWords، از آنِ فضای کاریاند. کلید یا ورودی که به نشانیها یا دامنههای مشخصی محدود است نمیتواند آنها را تغییر دهد، و در--addressفقط میتواند نشانیای را نام ببرد که دارد، یا catch-all دامنهای را که کامل دارد. هر دو رد 422capability_unsupportedاست. - بهروزرسانیای که چیزی در آن نیست چیزی را تغییر نمیدهد و تنظیمات کنونی را برمیگرداند.
defaultEmailAliasفقط نشانی From را در نامهنگار برنامهٔ وب از پیش انتخاب میکند، و API هرگز از آن برای انتخاب فرستنده استفاده نمیکند.
نمونهها
file_id=$(openemail files upload ./price-list.pdf --json | jq -r .id)openemail files create-link "$file_id" --domain acme.com --json | jq -r .urlopenemail files list-links "$file_id"openemail files download "$file_id" --out copy.pdfهر create-link پیوند تازهای میسازد، پس یک بار اجرایش کنید و پیوند را با list-links دوباره بخوانید. revoke-link بعداً آن را متوقف میکند، در نامههایی که پیشتر رفتهاند هم.
openemail files list --direction uploaded --all | jq -r 'select(.deletable) | .id' > deletable.txtwc -l < deletable.txtxargs -r -n 100 openemail files delete-many --yes --json < deletable.txt | jq -c '.kept[]'با --all در یک لوله، files list در هر سطر یک فایل چاپ میکند. xargs -n 100 در هر فراخوانی حداکثر 100 شناسه به delete-many میدهد، و هر فایلی که در این میان به کار رفته باشد به جای شکست دادن فراخوانی با دلیلش در kept برمیگردد.
domain_id=$(openemail domains list --all | jq -r 'select(.domain == "acme.com") | .id')address_id=$(openemail domains list-addresses "$domain_id" --all | jq -r 'select(.address == "[email protected]") | .id')openemail imports import-files --address-id "$address_id" --files ~/Downloads/takeout-001.zip --files ~/Downloads/takeout-002.zip --json > import.jsonimport_id=$(jq -r .id import.json)until openemail imports get "$import_id" --json | jq -e '.status != "queued" and .status != "running"' > /dev/null; do sleep 60doneopenemail imports get "$import_id" --json | jq '{status, counts, lastError}'openemail imports list-failures "$import_id" --json | jq -r '.data[] | [.reason, .subject] | @tsv'--dry-run روی import-files درخواست POST /imports را که میفرستاد، با نام و اندازهٔ هر فایل، چاپ میکند و چیزی بارگذاری نمیکند. list-failures در هر بار 100 مورد میخواند: nextCursor چاپشده را بهعنوان --after برای صفحهٔ بعد بدهید.
openemail provider-imports inspect @resend-key.txtopenemail provider-imports create --resend-key @resend-key.txt --resources suppressions,audiences,contacts,templates,webhooks,domains,api-keys --json > resend.jsonpimp_id=$(jq -r .id resend.json)until openemail provider-imports get "$pimp_id" --json | jq -e '.status != "queued" and .status != "running"' > /dev/null; do sleep 10doneopenemail provider-imports get "$pimp_id" --json | jq '.report | {contacts, domains: [.domains[] | {name, state}], apiKeys: [.apiKeys[].name]}'openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-11-01T00:00:00Z --timezone Europe/London --all | jq -r 'select(.status != "CANCELLED") | [.start, .summary, .myPartstat] | @tsv'openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1 --json | jq '.attendees[] | {email, partstat}'openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1 --out standup.icsopenemail settings get --address [email protected] --json | jq '{signature, openEmailSignature, trackOpens, trackClicks}'openemail settings update --address [email protected] --signature "$(cat signature.html)" --no-track-clicks --dry-runopenemail settings update --address [email protected] --signature "$(cat signature.html)" --no-track-clicksopenemail settings update --address '*@acme.com' --no-track-opensopenemail settings update --timezone Europe/London --language enopenemail settings get --json | jq -c '{blockedDomains: ((.blockedDomains + ["spam.example"]) | unique)}' | openemail settings update --data -اجرای آزمایشی PATCH /settings?address=sales%40acme.com و بدنهاش را بدون فرستادن چاپ میکند. سطر catch-all ردیابی را برای هر نشانیای تنظیم میکند که catch-all دامنهٔ acme.com میگیرد، و سطر آخر یک دامنه را بدون کنار گذاشتن بقیه به فهرست مسدودی اضافه میکند.
دامنههای مجوز، تأییدها و خطاها
| دامنهٔ مجوز | فرمانها |
|---|---|
| files:read | files list, get, stats, download, list-links |
| files:write | files create-link, revoke-link, upload, delete, delete-many |
| threads:read | imports list, get, list-failures |
| threads:write | imports create, upload-state, upload-chunk, start, cancel, delete-upload, import-files |
| settings:read | provider-imports list، get، و settings get |
| settings:write | provider-imports inspect، create، cancel، و settings update |
| calendar:read | calendar list-events, get-event, get-event-ics |
- ورود یا کلیدی که آن دامنهٔ مجوز را ندارد با کد خروج
4متوقف میشود، دامنهٔ مجوزِ ناموجود را نام میبرد و میگوید چطور آن را به دست آورید. files revoke-link،files delete،files delete-many،imports cancel،imports delete-uploadوprovider-imports cancelاز شما تأیید میخواهند. پاسخ منفی با کد10خارج میشود و چیزی را تغییر نمیدهد. بدون نظارت و بدون--yes، پیش از فرستادن هر چیزی با کد خروج2متوقف میشوند.- هیچ فرمانی اینجا کد تأیید هویت نمیخواهد، چه با ورود از طریق مرورگر و چه با کلید API، پس
--yesتمام چیزی است که یک اسکریپت لازم دارد. --dry-runدرخواستی را که یک تغییر میفرستاد، با بدنهاش، چاپ میکند و بدون فرستادن یا خواستن تأیید با کد0خارج میشود. بدنهٔ فایل با اندازه و نوعش نشان داده میشود.files list،files list-links،imports list،provider-imports listوcalendar list-eventsیک صفحه میخوانند:--limitاز 1 تا 100 میگیرد و وقتی نباشد سرور 25 میفرستد، و--cursorمقدارnextCursorصفحهٔ پیشین را میگیرد.--allهمهٔ صفحهها را میخواند،--max <n>پس از همان تعداد مورد میایستد، و--ndjson، یا--allدر یک لوله، در هر سطر یک شیء JSON چاپ میکند. با--jsonیک سند{ items, hasMore, nextCursor }چاپ میکنند.imports list-failuresبه روش خودش صفحهبندی میکند:--afterمقدارnextCursorصفحهٔ پیشین را میگیرد،--limitحداکثر 100 است که پیشفرض هم هست، و--allوجود ندارد. با--jsonمقدار{ object, data, nextCursor }را چاپ میکند.- خواندنها و تغییرهایی که دو بار به همان نتیجه میرسند پس از خرابی شبکه دوباره تلاش میشوند:
files revoke-link،imports upload-chunk،imports startوsettings update. هر تغییر دیگری یک بار فرستاده میشود. پس از گم شدن پاسخ، پیش از تلاش دوباره نگاه کنید:uploadدوم نسخهٔ دومی ذخیره میکند وcreate-linkدوم پیوند دومی میسازد، 404 درfiles deleteدوم یعنی اولی کار کرده، وdelete-manyدوم آنچه اولی حذف کرده را درmissingفهرست میکند. - هر رد با کدِ وضعیتش خارج میشود:
4برای 403،5برای 404،6برای 409،7برای 400 یا 422، و8برای 429.