फ़ाइलें, इंपोर्ट और सेटिंग्स
मेलबॉक्स में रखी फ़ाइलों, पुराने मेलबॉक्स या Resend अकाउंट के इंपोर्ट, मेल में मिले कैलेंडर, और वर्कस्पेस और हर पते की सेटिंग्स की हर कमांड।
अवलोकन
मेल के आसपास की चीज़ों को पाँच नेमस्पेस कवर करते हैं। openemail files फ़ाइलें पेज है: भेजा और पाया गया हर अटैचमेंट और अपलोड की गई हर फ़ाइल, उसके बाइट और उन डाउनलोड लिंक के साथ जिनके रूप में वह भेजी गई। openemail imports पुराना मेलबॉक्स एक पते में लाता है, और openemail provider-imports एक Resend अकाउंट को यहाँ लाता है। openemail calendar मेल में मिले इवेंट पढ़ता है, और openemail settings मेलबॉक्स की पसंद और हर पते का हस्ताक्षर और ट्रैकिंग पढ़ता और बदलता है।
- ID बताती है कि वह किसकी है: फ़ाइल के लिए
file_, मेलबॉक्स इंपोर्ट के लिएimp_, Resend इंपोर्ट के लिएpimp_और कैलेंडर इवेंट के लिएcal_, हर एक के बाद 24 hex अक्षर। डाउनलोड लिंक की अपनी ID होती है, जोfiles list-linksयाfiles create-linkसे मिलती है। - इंपोर्ट पर
--address-idकिसी पते की ID है, जोopenemail domains list-addresses <id>से मिलती है, ख़ुद पता नहीं। - नेमस्पेस
file,import,provider-importयाproviderImports, औरsettingसे भी चलते हैं। जहाँ उपनाम हैं, वहाँ वर्ब सामान्य उपनाम लेते हैं:listके लिएls,getके लिएshowऔरview,createके लिएnewऔरadd,settings updateके लिएedit, औरfiles deleteके लिएrm,delऔरremove। - इनमें से कोई भी कमांड ब्राउज़र साइन-इन से सत्यापन कोड नहीं माँगती। जो कमांड कुछ हमेशा के लिए बदलती हैं, वे पुष्टि माँगती हैं, और स्क्रिप्ट के लिए
--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और--untilISO 8601 तारीख़ या तारीख़-समय लेते हैं:--sinceअपने पल को शामिल करता है और--untilउससे पहले रुक जाता है।- सिर्फ़ वही अपलोड हटाया जा सकता है जिस पर कुछ भी निर्भर न हो, और
deletableयह पहले से बताता है।usageबताता है कि किसी भी दूसरी फ़ाइल को क्या रोके हुए है:received,sent, ऐसे अपलोड के लिएlinkedजिसका डाउनलोड लिंक अब भी काम करता है, या ऐसे अपलोड के लिएscheduledजो किसी अभी न गए संदेश से जुड़ा है।deleteइन्हें 409file_in_useके साथ अस्वीकार करती है।delete-manyजो हटा सके वह हटाती है, बाकी को हर एक के कारण के साथkeptमें दिखाती है, और अनजानी ID कोmissingमें। uploadआपके दिए पाथ की फ़ाइल पढ़ती है और उसे उसी फ़ाइल के नाम से, उसके एक्सटेंशन से पता चलने वाले प्रकार के साथ सहेजती है।--filenameऔर--content-typeइन्हें बदल देते हैं। stdin से,-को--filenameचाहिए, और--content-typeके बिना प्रकारapplication/octet-streamहोता है। अपलोड 10 मिनट तक इंतज़ार करता है, जिसे--timeout-msबदलता है।uploadजो ID लौटाती है, वहopenemail emails send --attachmentsमें{ "fileId": "…" }के रूप में फ़ाइल को भेजने से जोड़ती है, और 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 आर्काइव, Apple Mail, Thunderbird और ज़्यादातर डेस्कटॉप ऐप की .mbox फ़ाइलें, .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{"keepInbox":false,"includeSpam":true}जैसा JSON लेता है।createपर यही तीन स्विच हैं:--options-keep-inbox,--options-include-spamऔर--options-include-trash, हर एक आगे--no-लगाकर बंद होता है, जैसे--no-options-keep-inbox।keepInboxडिफ़ॉल्ट रूप से चालू है, इसलिए पुराने इनबॉक्स की मेल अपनी अनपढ़ी स्थिति के साथ Inbox में आती है। बंद होने पर सब कुछ Archive में जाता है। स्पैम और ट्रैश पीछे रह जाते हैं, जब तक आप उन्हें शामिल न करें।create--filesको JSON के रूप में लेती है, इनलाइन या@pathसे फ़ाइल से, और हरbytesउस फ़ाइल का ठीक आकार होना चाहिए जिसे आप फिर अपलोड करेंगे।- फ़ाइल के आख़िरी हिस्से को छोड़कर हर हिस्सा ठीक
chunkBytesलंबा होता है, और ग़लत लंबाई का हिस्सा 400bad_chunkहै।startहिस्से ग़ायब वाली फ़ाइल को 412missing_chunksके साथ अस्वीकार करती है, और जो फ़ाइल न आर्काइव हो न मेलबॉक्स उसे 400unsupported_fileके साथ। जो इंपोर्टuploadingसे आगे निकल चुका है, उस पर यह इंपोर्ट को बिना बदले लौटाती है। - अगर दोबारा कोशिशों के बाद भी कोई हिस्सा विफल रहे, तो
import-filesइंपोर्ट कोuploadingमें छोड़कर रुक जाती है। नीचे का ब्लॉक पहली फ़ाइल के ग़ायब हिस्से भेजता है और इंपोर्ट शुरू करता है। - इंपोर्ट
totalBytesमें सेprocessedBytesबताता है, औरseen,imported,duplicate,filtered,failedऔरthreadsके साथcounts।lastErrorसिर्फ़ तब सेट होता है जबstatusfailedहो। list-failuresहर विफलता को एकreasonदेती है:too-large(50 MB से ऊपर),unparseable,no-date,storage-error,unreadable-entry,encrypted-entryयाarchive-limit, और जहाँ पढ़े जा सके वहाँ विषय और भेजने वाला भी।- पूरे हो चुके इंपोर्ट पर
cancel409not_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 एक फ़ुल-एक्सेस Resend API कुंजी से वर्कस्पेस को 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कुंजी छिपाकर बॉडी प्रिंट करता है। --resourcessuppressions,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और--to2026-10-01T00:00:00Zजैसे ISO 8601 तारीख़-समय हैं।--toको--fromके बाद और ज़्यादा से ज़्यादा 366 दिन बाद होना चाहिए, क्योंकि दोहराई जाने वाली सीरीज़ का कोई अंत नहीं होता जहाँ तक सूची बने। ग़ायब सीमा 422invalid_parameterहै। जो सीमा पार्स न हो, उलटी या बहुत लंबी अवधि, या अनजाना ज़ोन 400invalid_parameterहै।--timezoneEurope/Londonजैसा IANA ज़ोन है, छोड़ने पर UTC। यह उन इवेंट को फैलाता है जो अपने ज़ोन के बिना सहेजे गए हैं, जिससे तय होता है कि पूरे दिन का इवेंट किस दिन पड़ेगा।get-eventऔरget-event-icsकिसी घटना काeventIdलेती हैं, iCalendaruidनहीं। दोहराई जाने वाली सीरीज़ एक इवेंट है, इसलिए उसकेstartऔरendपहली घटना बताते हैं।- रद्द हुए इवेंट भी सूची में आते हैं,
statusCANCELLEDके साथ।myPartstatवह जवाब है जो वर्कस्पेस के अपने डोमेन पर मौजूद किसी भी पते के लिए दर्ज है, और null जब उनमें से कोई प्रतिभागी न हो। - पेजिंग
--cursorऔर उसी अवधि के साथ आगे बढ़ती है। किसी ख़ास पते तक सीमित कुंजी या साइन-इन सिर्फ़ वे इवेंट देखती है जिन्हें उनमें से कोई आयोजित करता है या जिनमें शामिल होता है, और कोई भी दूसरा इवेंट 404 है। get-event-icsMETHOD:PUBLISHघोषित करती है, इसलिए इसे इंपोर्ट करने पर इवेंट जैसा है वैसा दिखता है, स्वीकार या अस्वीकार करने का विकल्प नहीं। समय वाले इवेंट UTC समय के रूप में और पूरे दिन वाले इवेंट तारीख़ के रूप में लिखे जाते हैं।DTSTAMPडाउनलोड का समय है, इसलिए बिना बदले इवेंट के दो डाउनलोड उस लाइन पर अलग होते हैं।
सेटिंग्स
openemail settings मेलबॉक्स की पसंद पढ़ता और बदलता है, जैसे टाइमज़ोन, भाषा, समय का फ़ॉर्मैट और ब्लॉकलिस्ट। चार सेटिंग्स वर्कस्पेस की नहीं, पते की होती हैं: signature, openEmailSignature (OpenEmail फ़ुटर), trackOpens और trackClicks। पता --address से बताएँ, या डोमेन के कैच-ऑल के लिए *@acme.com।
| कमांड | यह क्या करता है |
|---|---|
| openemail settings get | हर सेटिंग डिफ़ॉल्ट भरकर पढ़ें। --address के साथ, चार प्रति-पता सेटिंग्स वैसे पढ़ी जाती हैं जैसे उस पते से भेजना उन्हें तय करता है |
| openemail settings update | जो सेटिंग्स आप दें उन्हें बदलें और बाकी रखें। जवाब में हर सेटिंग होती है, लिखने के बाद फिर से पढ़ी हुई |
--addressके बिनाgetचार प्रति-पता सेटिंग्स को बिल्ट-इन डिफ़ॉल्ट के रूप में पढ़ती है: कोई हस्ताक्षर नहीं, OpenEmail फ़ुटर चालू, और ओपन और लिंक ट्रैकिंग चालू। इसके साथ वे पते के अपने मानों से आती हैं, फिर उसके डोमेन के कैच-ऑल से जब कैच-ऑल ने वह पता पकड़ा हो, फिर डिफ़ॉल्ट से। बिना अपनी सेटिंग्स वाला प्लस पता अपने मूल पते की सेटिंग्स पढ़ता है।--addressके बिनाupdate--signature,--open-email-signature,--track-opensऔर--track-clicksको 422address_requiredके साथ अस्वीकार करती है और कुछ नहीं लिखती। इसके साथupdateसिर्फ़ ये चार लेती है, और बाकी कुछ भी 422not_per_addressहै। पता इसी वर्कस्पेस में होना चाहिए, या यहाँ के किसी सत्यापित डोमेन के लिए*@domain, जिसका कैच-ऑल चालू हो।- स्विच आगे
--no-लगाने से बंद होते हैं:--no-open-email-signature,--no-track-opensऔर--no-track-clicks। --signatureज़्यादा से ज़्यादा 150,000 वर्णों का HTML है, जो लिखते समय साफ़ किया जाता है, इसलिए जो लौटता है वही भेजा जाएगा। ख़ाली स्ट्रिंग इसे हटा देती है। भेजना इसे जोड़ेगा या नहीं, यह भेजने पर निर्भर है:openemail emails send --helpमें--signatureदेखें।- फ़्लैग आम फ़ील्ड को कवर करते हैं।
--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में सिर्फ़ अपने पास का पता, या अपने पास के पूरे डोमेन का कैच-ऑल बता सकती है। दोनों में से कोई भी इनकार 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 delete-many को एक कॉल में ज़्यादा से ज़्यादा 100 ID देता है, और बीच में जो फ़ाइल इस्तेमाल में आ गई वह कॉल को विफल करने के बजाय अपने कारण के साथ 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'import-files पर --dry-run वह 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 और उसकी बॉडी को भेजे बिना प्रिंट करता है। कैच-ऑल वाली लाइन 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एक पेज पढ़ती हैं:--limit1 से 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दूसरा लिंक बनाता है, आपके दूसरेfiles deleteपर 404 का मतलब है कि पहला काम कर गया, और दूसराdelete-manyपहले में हटाई गई चीज़ेंmissingमें दिखाता है। - अस्वीकार होने पर कमांड उसकी स्थिति के कोड के साथ बाहर निकलती है: 403 के लिए
4, 404 के लिए5, 409 के लिए6, 400 या 422 के लिए7, और 429 के लिए8।