दस्तावेज़ पर जाएँ
CLI

हर कमांड

सभी 241, हर एक की एक पंक्ति, उस एंडपॉइंट के साथ जिसे हर रिसोर्स कमांड कॉल करती है।

हर कमांड

कुल 241 कमांड हैं, हर एक अपनी पंक्ति में, उसी क्रम में जिसमें openemail --help उन्हें दिखाता है। 46 लोगों के लिए हाथ से लिखी गई हैं: जो छूटा है वह पूछती हैं, जो प्रिंट करती हैं उसे फ़ॉर्मैट करती हैं और जहाँ मदद हो वहाँ कई API कॉल जोड़ती हैं, इसलिए उनकी पंक्ति में कोई एक एंडपॉइंट नहीं होता। बाकी 195 रिसोर्स कमांड हैं, 25 नेमस्पेस में फैली openemail <namespace> <verb>, और हर एक वह एंडपॉइंट कॉल करती है जो उसकी पंक्ति में लिखा है।

रिसोर्स कमांड एक-एक करके नहीं लिखी जातीं। CLI SDK का मेथड मैनिफ़ेस्ट पढ़ती है, जो हर मेथड को उसके पैरामीटर, एंडपॉइंट और स्कोप के साथ बताता है, और हर मेथड को नेमस्पेस और मेथड के kebab case नाम वाले वर्ब में बदल देती है, इसलिए domains.createAddress बनता है openemail domains create-address। एक list और उसे पढ़ने वाले listAll और iterate मिलकर --all और --max वाला एक list वर्ब बन जाते हैं, इसीलिए कमांड SDK मेथड से कम हैं।

पैकेज की पैरिटी जाँच हर रिलीज़ से पहले इसे साबित करती है। हर SDK मेथड के लिए यह कमांड लाइन तीन तरह से बनाती है, सिर्फ़ ज़रूरी मानों के साथ, उन्हें --data फ़ाइल में रखकर, और हर फ़्लैग सेट करके, कमांड को एक रिकॉर्डिंग fetch के सामने चलाती है, और तब विफल होती है जब किसी मेथड की कोई कमांड न हो या जब कोई कमांड मैनिफ़ेस्ट में बताए मेथड, पाथ, क्वेरी, बॉडी और क्रेडेंशियल के अलावा कुछ और भेजे। फिर यह उन्हीं कमांड लाइनों को असली पार्सर और डिस्पैचर से चलाती है, और सीधी कॉल से अलग किसी भी अनुरोध पर विफल होती है।

हर पंक्ति अपनी कमांड के उपयोग की पहली लाइन दिखाती है। बाकी openemail <command> --help दिखाता है: हर आर्ग्युमेंट और फ़्लैग, वह क्या लेता है, और उदाहरण, और रिसोर्स कमांड के लिए उसके स्कोप, उसका एंडपॉइंट, वह क्या लौटाती है और API रेफ़रेंस के नोट्स। वही पेज एक JSON दस्तावेज़ के रूप में पाने के लिए --json जोड़ें, और openemail --help --json हर कमांड, आर्ग्युमेंट और फ़्लैग एक साथ प्रिंट करता है। हर कमांड ग्लोबल फ़्लैग भी लेती है, --json, --yes, --dry-run, --profile, --api-key, --base-url, --no-input, --no-color और --debug, इसलिए कोई पंक्ति उन्हें नहीं दोहराती।

कमांडकॉल करती हैस्कोप
openemail login-कोई नहीं
openemail whoami-कोई नहीं
openemail status-कोई नहीं
openemail send --to <address> --subject <text> --text <body> [flags]-emails:send
openemail inbox [folder] [flags]-threads:read
openemail read <thread-id> [flags]-threads:read
openemail search <query...> [flags]-threads:read
openemail reply <thread-id> --text <body> [flags]-threads:read + emails:send
openemail archive <thread-id...>-threads:write
openemail unarchive <thread-id...>-threads:write
openemail trash <thread-id...>-threads:write
openemail star <thread-id...>-threads:write
openemail unstar <thread-id...>-threads:write
openemail mark read <thread-id...>-threads:write
openemail mark unread <thread-id...>-threads:write
openemail snooze <thread-id...> --until <when>-threads:write
openemail unsnooze <thread-id...>-threads:write
openemail label add <thread-id...> --label <label-id>-threads:write
openemail label remove <thread-id...> --label <label-id>-threads:write
openemail temp new [--name <local-part>] [--domain <domain>] [--ttl <minutes>]-कोई नहीं
openemail temp list-कोई नहीं
openemail temp read [inbox] [message-id] [flags]-कोई नहीं
openemail temp watch [inbox] [--first]-कोई नहीं
openemail temp delete [inbox] [--yes]-कोई नहीं
openemail ai translate --to <language> [--text <text>|--html <html>|--body-file <path>] [--subject <subject>]-emails:send
openemail ai languages [--search <text>]-कोई नहीं
openemail ai compose "<prompt>" [--to <address>] [--subject <subject>] [--thread <thread-id>] [--tone <tone>]-drafts:write
openemail ai summarize <thread-id>-threads:read
openemail mcp config [--client <client>]-कोई नहीं
openemail mcp tools [tool]-कोई नहीं
openemail mcp call <tool> [--args <json|@file|->] [--arg key=value ...]-कोई नहीं
openemail mcp serve-कोई नहीं
openemail docs ask "<question>"-कोई नहीं
openemail docs open [slug] [--print]-कोई नहीं
openemail docs read [slug]-कोई नहीं
openemail agents-कोई नहीं
openemail me get [flags]GET /keys/selfकोई नहीं
openemail me ping [flags]GET /pingकोई नहीं
openemail me rotate [flags]POST /keys/self/rotatekeys:write
openemail keys list [flags]GET /keyskeys:read
openemail keys get <id> [flags]GET /keys/{id}keys:read
openemail keys create --name <value> [flags]POST /keyskeys:manage
openemail keys update <id> [flags]PATCH /keys/{id}keys:manage
openemail keys delete <id> [flags]DELETE /keys/{id}keys:manage
openemail keys rotate <id> [flags]POST /keys/{id}/rotatekeys:manage
openemail keys revoke <id> [flags]POST /keys/{id}/revokekeys:manage
openemail keys list-requests <id> [flags]GET /keys/{id}/requestskeys:read
openemail keys list-activity <id> [flags]GET /keys/{id}/activitykeys:read
openemail keys list-workspace-requests [flags]GET /keys/requestskeys:read
openemail keys list-workspace-activity [flags]GET /keys/activitykeys:read
openemail addresses list [flags]GET /addressesemails:send
openemail languages list [flags]GET /languagesकोई नहीं
openemail emails send --from <value> --to <a,b> [flags]POST /emailsemails:send
openemail emails send-batch <emails> [flags]POST /emails/batchemails:send
openemail emails translate --to <value> [flags]POST /emails/translateemails:send
openemail emails list [flags]GET /emailsemails:read
openemail emails get <id> [flags]GET /emails/{id}emails:read
openemail emails list-events <id> [flags]GET /emails/{id}/eventsemails:read
openemail emails get-tracking <id> [flags]GET /emails/{id}/trackingemails:read
openemail emails cancel <id> [flags]POST /emails/{id}/cancelemails:send
openemail emails reschedule <id> <scheduled-at> [flags]PATCH /emails/{id}emails:send
openemail templates list [flags]GET /templatestemplates:read
openemail templates get <id-or-slug> [flags]GET /templates/{id}templates:read
openemail templates create --name <value> [flags]POST /templatestemplates:write
openemail templates update <id-or-slug> [flags]PATCH /templates/{id}templates:write
openemail templates duplicate <id-or-slug> [flags]POST /templates/{id}/duplicatetemplates:write
openemail templates replace-content <id-or-slug> [flags]POST /templates/{id}/contenttemplates:write
openemail templates delete <id-or-slug> [flags]DELETE /templates/{id}templates:write
openemail templates list-versions <id-or-slug> [flags]GET /templates/{id}/versionstemplates:read
openemail templates get-version <id-or-slug> <version> [flags]GET /templates/{id}/versions/{version}templates:read
openemail templates publish <id-or-slug> [flags]POST /templates/{id}/versionstemplates:write
openemail templates restore-version <id-or-slug> <version> [flags]POST /templates/{id}/versions/{version}/restoretemplates:write
openemail templates delete-version <id-or-slug> <version> [flags]DELETE /templates/{id}/versions/{version}templates:write
openemail templates list-starters [flags]GET /templates/starterstemplates:read
openemail templates get-starter <slug> [flags]GET /templates/starters/{slug}templates:read
openemail templates list-fonts [flags]GET /templates/fontstemplates:read
openemail templates render [flags]POST /templates/rendertemplates:read
openemail templates preview <id-or-slug> [flags]POST /templates/{id}/previewtemplates:read
openemail templates get-analytics <id-or-slug> [flags]GET /templates/{id}/analyticstemplates:read
openemail templates list-sends <id-or-slug> [flags]GET /templates/{id}/sendstemplates:read
openemail templates send <id-or-slug> --from <value> --to <a,b> [flags]POST /templates/{id}/sendtemplates:write + emails:send
openemail tracking list [flags]GET /trackingemails:read
openemail tracking get-stats [flags]GET /tracking/statsemails:read
openemail tracking get <id> [flags]GET /tracking/{id}emails:read
openemail tracking list-opens <id> [flags]GET /tracking/{id}/opensemails:read
openemail tracking list-clicks <id> [flags]GET /tracking/{id}/clicksemails:read
openemail threads list [flags]GET /threadsthreads:read
openemail threads get <id> [flags]GET /threads/{id}threads:read
openemail threads update <id> [flags]PATCH /threads/{id}threads:write
openemail threads trash <id> [flags]POST /threads/{id}/trashthreads:write
openemail threads snooze <id> <wake-at> [flags]POST /threads/{id}/snoozethreads:write
openemail threads unsnooze <id> [flags]POST /threads/{id}/unsnoozethreads:write
openemail threads list-attachments <id> <message-id> [flags]GET /threads/{id}/messages/{messageId}/attachmentsthreads:read
openemail drafts list [flags]GET /draftsdrafts:read
openemail drafts get <id> [flags]GET /drafts/{id}drafts:read
openemail drafts create [flags]POST /draftsdrafts:write
openemail drafts update <id> [flags]PATCH /drafts/{id}drafts:write
openemail drafts delete <id> [flags]DELETE /drafts/{id}drafts:write
openemail labels list [flags]GET /labelslabels:read
openemail labels list-colors [flags]GET /labels/colorslabels:read
openemail labels get <id> [flags]GET /labels/{id}labels:read
openemail labels create --name <value> [flags]POST /labelslabels:write
openemail labels update <id> [flags]PATCH /labels/{id}labels:write
openemail labels delete <id> [flags]DELETE /labels/{id}labels:write
openemail contacts list [flags]GET /contactscontacts:read
openemail contacts get <email> [flags]GET /contacts/{email}contacts:read
openemail contacts create --email <value> [flags]POST /contactscontacts:write
openemail contacts update <email> [flags]PATCH /contacts/{email}contacts:write
openemail contacts delete <email> [flags]DELETE /contacts/{email}contacts:write
openemail contacts set-audiences <email> --audience-ids <a,b> [flags]PUT /contacts/{email}/audiencesaudiences:write
openemail contacts list-people [flags]GET /contacts/peoplecontacts:read
openemail contacts save <email> [flags]PUT /contacts/{email}contacts:write
openemail contacts delete-many <emails...> [flags]POST /contacts/batch-deletecontacts:write
openemail contacts set-photo <email> <data> [flags]PUT /contacts/{email}/photocontacts:write
openemail contacts remove-photo <email> [flags]DELETE /contacts/{email}/photocontacts:write
openemail contacts block <email> [flags]POST /contacts/{email}/blocksettings:write
openemail contacts unblock <email> [flags]DELETE /contacts/{email}/blocksettings:write
openemail contacts list-threads <email> [flags]GET /contacts/{email}/threadsthreads:read
openemail contacts activity <email> [flags]GET /contacts/{email}/activitythreads:read
openemail audiences list [flags]GET /audiencesaudiences:read
openemail audiences growth [flags]GET /audiences/growthaudiences:read
openemail audiences get <id> [flags]GET /audiences/{id}audiences:read
openemail audiences create --name <value> [flags]POST /audiencesaudiences:write
openemail audiences update <id> [flags]PATCH /audiences/{id}audiences:write
openemail audiences delete <id> [flags]DELETE /audiences/{id}audiences:write
openemail audiences empty <id> [flags]POST /audiences/{id}/emptyaudiences:write
openemail audiences list-contacts <id> [flags]GET /audiences/{id}/contactsaudiences:read
openemail audiences add-contact <id> --email <value> [flags]POST /audiences/{id}/contactsaudiences:write
openemail audiences remove-contact <id> <email> [flags]DELETE /audiences/{id}/contacts/{email}audiences:write
openemail audiences add-contacts <id> --emails <a,b> [flags]POST /audiences/{id}/contacts/batchaudiences:write
openemail audiences remove-contacts <id> --emails <a,b> [flags]POST /audiences/{id}/contacts/batch-removeaudiences:write
openemail audiences import-contacts <id> --contacts <json|@file|-> [flags]POST /audiences/{id}/importaudiences:write + contacts:write
openemail broadcasts preview --audience-ids <a,b> [flags]POST /broadcasts/previewaudiences:read
openemail broadcasts send --audience-ids <a,b> --from <value> [flags]POST /broadcastsemails:send + audiences:read
openemail broadcasts list [flags]GET /broadcastsemails:read
openemail broadcasts get <id> [flags]GET /broadcasts/{id}emails:read
openemail broadcasts stats <id> [flags]GET /broadcasts/{id}/statsemails:read
openemail broadcasts list-recipients <id> [flags]GET /broadcasts/{id}/recipientsemails:read
openemail broadcasts get-recipient <id> <email-id> [flags]GET /broadcasts/{id}/recipients/{emailId}emails:read
openemail broadcasts cancel <id> [flags]POST /broadcasts/{id}/cancelemails:send
openemail domains list [flags]GET /domainsdomains:read
openemail domains get <id> [flags]GET /domains/{id}domains:read
openemail domains create --domain <value> [flags]POST /domainsdomains:write
openemail domains verify <id> [flags]POST /domains/{id}/verifydomains:write
openemail domains update <id> [flags]PATCH /domains/{id}domains:write
openemail domains delete <id> [flags]DELETE /domains/{id}domains:write
openemail domains list-addresses <id> [flags]GET /domains/{id}/addressesdomains:read
openemail domains create-address <id> --local-part <value> [flags]POST /domains/{id}/addressesdomains:write
openemail domains get-address <id> <address-id> [flags]GET /domains/{id}/addresses/{addressId}domains:read
openemail domains update-address <id> <address-id> [flags]PATCH /domains/{id}/addresses/{addressId}domains:write
openemail domains delete-address <id> <address-id> [flags]DELETE /domains/{id}/addresses/{addressId}domains:write
openemail rules list [flags]GET /rulesrules:read
openemail rules get <id> [flags]GET /rules/{id}rules:read
openemail rules create --name <value> --conditions <json|@file|-> --actions <json|@file|-> [flags]POST /rulesrules:write
openemail rules update <id> [flags]PATCH /rules/{id}rules:write
openemail rules delete <id> [flags]DELETE /rules/{id}rules:write
openemail rules reorder <rule-ids...> [flags]POST /rules/reorderrules:write
openemail rules test <id> [flags]POST /rules/{id}/testrules:read
openemail rules list-runs [flags]GET /rules/runsrules:read
openemail webhooks list [flags]GET /webhookswebhooks:read
openemail webhooks get <id> [flags]GET /webhooks/{id}webhooks:read
openemail webhooks create --url <value> [flags]POST /webhookswebhooks:write
openemail webhooks update <id> [flags]PATCH /webhooks/{id}webhooks:write
openemail webhooks delete <id> [flags]DELETE /webhooks/{id}webhooks:write
openemail webhooks rotate-secret <id> [flags]POST /webhooks/{id}/rotate-secretwebhooks:write
openemail webhooks test <id> [flags]POST /webhooks/{id}/testwebhooks:write
openemail webhooks list-deliveries <id> [flags]GET /webhooks/{id}/deliverieswebhooks:read
openemail webhooks get-delivery <id> <delivery-id> [flags]GET /webhooks/{id}/deliveries/{deliveryId}webhooks:read
openemail webhooks replay-delivery <id> <delivery-id> [flags]POST /webhooks/{id}/deliveries/{deliveryId}/replaywebhooks:write
openemail webhooks list-workspace-deliveries [flags]GET /webhooks/deliverieswebhooks:read
openemail webhooks list-activity <id> [flags]GET /webhooks/{id}/activitywebhooks:read
openemail webhooks list-workspace-activity [flags]GET /webhooks/activitywebhooks:read
openemail imports list [flags]GET /importsthreads:read
openemail imports get <id> [flags]GET /imports/{id}threads:read
openemail imports create --address-id <value> --files <json|@file|-> [flags]POST /importsthreads:write
openemail imports upload-state <id> [flags]GET /imports/{id}/uploadthreads:write
openemail imports upload-chunk <id> <file> <chunk> <data> [flags]PUT /imports/{id}/files/{file}/chunks/{chunk}threads:write
openemail imports start <id> [flags]POST /imports/{id}/startthreads:write
openemail imports cancel <id> [flags]POST /imports/{id}/cancelthreads:write
openemail imports list-failures <id> [flags]GET /imports/{id}/failuresthreads:read
openemail imports delete-upload <id> [flags]DELETE /imports/{id}/uploadthreads:write
openemail imports import-files --address-id <value> --files <path> [flags]POST /importsthreads:write
openemail provider-imports inspect <api-key> [flags]POST /provider-imports/inspectsettings:write
openemail provider-imports create --resend-key <value> --resources <a,b> [flags]POST /provider-importssettings:write
openemail provider-imports list [flags]GET /provider-importssettings:read
openemail provider-imports get <id> [flags]GET /provider-imports/{id}settings:read
openemail provider-imports cancel <id> [flags]POST /provider-imports/{id}/cancelsettings:write
openemail calendar list-events --from <when> --to <when> [flags]GET /calendar/eventscalendar:read
openemail calendar get-event <id> [flags]GET /calendar/events/{id}calendar:read
openemail calendar get-event-ics <id> [flags]GET /calendar/events/{id}/icscalendar:read
openemail settings get [flags]GET /settingssettings:read
openemail settings update [flags]PATCH /settingssettings:write
openemail roles list [flags]GET /rolesroles:read
openemail roles get <id> [flags]GET /roles/{id}roles:read
openemail roles create --name <value> --permissions <a,b> [flags]POST /rolesroles:write
openemail roles update <id> [flags]PATCH /roles/{id}roles:write
openemail roles delete <id> [flags]DELETE /roles/{id}roles:write
openemail roles list-permissions [flags]GET /roles/permissionsroles:read
openemail members list [flags]GET /membersmembers:read
openemail members get <user-id> [flags]GET /members/{userId}members:read
openemail members add --email <value> --role-id <value> [flags]POST /membersmembers:write
openemail members update <user-id> --role-id <value> [flags]PATCH /members/{userId}members:write
openemail members remove <user-id> [flags]DELETE /members/{userId}members:write
openemail members grant-address <user-id> --address-id <value> [flags]POST /members/{userId}/addressesmembers:write
openemail members revoke-address <user-id> <address-id> [flags]DELETE /members/{userId}/addresses/{addressId}members:write
openemail members list-invitations [flags]GET /members/invitationsmembers:read
openemail members revoke-invitation <invitation-id> [flags]DELETE /members/invitations/{invitationId}members:write
openemail members resend-invitation <invitation-id> [flags]POST /members/invitations/{invitationId}/resendmembers:write
openemail suppressions list [flags]GET /suppressionssettings:read
openemail suppressions get <id> [flags]GET /suppressions/{id}settings:read
openemail suppressions add --email <value> [flags]POST /suppressionssettings:write
openemail suppressions remove <id> [flags]DELETE /suppressions/{id}settings:write
openemail files list [flags]GET /filesfiles:read
openemail files get <id> [flags]GET /files/{id}files:read
openemail files stats [flags]GET /files/statsfiles:read
openemail files download <id> [flags]GET /files/{id}/contentfiles:read
openemail files list-links <id> [flags]GET /files/{id}/linksfiles:read
openemail files create-link <id> [flags]POST /files/{id}/linksfiles:write
openemail files revoke-link <id> <link-id> [flags]DELETE /files/{id}/links/{linkId}files:write
openemail files upload <data> [flags]POST /filesfiles:write
openemail files delete <id> [flags]DELETE /files/{id}files:write
openemail files delete-many <ids...> [flags]POST /files/batch-deletefiles:write
openemail temp-mail list-domains [flags]GET /temp-mail/domainsकोई नहीं
openemail temp-mail create [flags]POST /temp-mail/inboxesकोई नहीं
openemail temp-mail get <inbox-id> [flags]GET /temp-mail/inboxes/{id}inbox token
openemail temp-mail extend <inbox-id> [flags]POST /temp-mail/inboxes/{id}/extendinbox token
openemail temp-mail delete <inbox-id> [flags]DELETE /temp-mail/inboxes/{id}inbox token
openemail temp-mail list-messages <inbox-id> [flags]GET /temp-mail/inboxes/{id}/messagesinbox token
openemail temp-mail get-message <inbox-id> <message-id> [flags]GET /temp-mail/inboxes/{id}/messages/{messageId}inbox token
openemail temp-mail delete-message <inbox-id> <message-id> [flags]DELETE /temp-mail/inboxes/{id}/messages/{messageId}inbox token
openemail temp-mail list-attachments <inbox-id> <message-id> [flags]GET /temp-mail/inboxes/{id}/messages/{messageId}/attachmentsinbox token
openemail verify-कोई नहीं
openemail logout-कोई नहीं
openemail profile list-कोई नहीं
openemail profile use <name>-कोई नहीं
openemail profile remove <name>-कोई नहीं
openemail profile current-कोई नहीं
openemail open [page] [--print]-कोई नहीं
openemail update-कोई नहीं
openemail completion <bash|zsh|fish>-कोई नहीं
openemail api <method> <path> [--data <json|@file|->] [--query <key=value>] [--header <key=value>]-कोई नहीं

स्कोप बताता है कि कमांड के हर रन को क्या चाहिए। सहेजे साइन-इन के साथ CLI कमांड के कुछ भी करने से पहले इसे जाँचती है, और स्कोप न होने पर कमांड एग्ज़िट कोड 4 के साथ रुकती है। api और mcp call कोई स्कोप नहीं बताते, क्योंकि उन्हें क्या चाहिए यह उस एंडपॉइंट या टूल पर निर्भर है जिसे आप कॉल करते हैं, और उसे सर्वर जाँचता है। जिन temp-mail पंक्तियों में "inbox token" लिखा है, वे वह oe_inbox_ टोकन भेजती हैं जो temp-mail create ने लौटाया और CLI ने सहेजा, और --inbox-token ऐसा टोकन देता है जिसे CLI ने नहीं बनाया।

6 कमांड को ब्राउज़र साइन-इन चाहिए, वह तरह जो openemail login ब्राउज़र चुनने पर सहेजता है: ai compose, ai summarize, mcp tools, mcp call, mcp serve और verify। AI और MCP वाली कमांड MCP सर्वर पर चलती हैं, जो कोई API कुंजी स्वीकार नहीं करता, और verify वे सत्यापन कोड डालता है जो सिर्फ़ ब्राउज़र साइन-इन से माँगे जाते हैं।

19 हाथ से लिखी कमांड को साइन-इन की बिल्कुल ज़रूरत नहीं: login, temp new, temp list, temp read, temp watch, temp delete, mcp config, docs ask, docs open, docs read, agents, logout, profile list, profile use, profile remove, profile current, open, update और completion। temp-mail पंक्तियों को भी नहीं। ai languages साइन इन हो या न हो, काम करती है।

42 कमांड विनाशकारी हैं, जैसे हटाना, रद्द करना, रोटेट करना, कैंसल करना या ख़ाली करना, इसलिए वे पहले पुष्टि माँगती हैं और जब कोई जवाब न दे सके तो एग्ज़िट कोड 2 के साथ रुकती हैं। --yes आपकी ओर से पुष्टि करता है, और --dry-run पढ़ने वाले काम चलाता है और कुछ बदलने वाले अनुरोध को भेजने के बजाय प्रिंट करता है।

openemail --help कुछ कमांड छोड़ देता है, और यह तालिका भी। help --help का लंबा रूप है, version CLI, SDK और रनटाइम के वर्ज़न प्रिंट करता है, और verify security वर्ब को कवर करता है।

आपका इनबॉक्स,
आपकी अपनी शर्तों पर।

व्यवसायों, AI, एजेंट और निजी ईमेल के लिए ईमेल इन्फ़्रास्ट्रक्चर। स्केल, निजता और नियंत्रण के लिए बना। वह सब जो ईमेल में पहले दिन से होना चाहिए था।

OpenEmail

व्यवसायों, AI, एजेंट और निजी ईमेल के लिए ईमेल इन्फ़्रास्ट्रक्चर। स्केल, निजता और नियंत्रण के लिए बना। वह सब जो ईमेल में पहले दिन से होना चाहिए था।

© 2026 OpenEmail. सर्वाधिकार सुरक्षित।