SDK
فهرست تغییرات
همهٔ انتشارهای این بسته، تازهترین در ابتدا.
0.1.0
انتشار دوم. اکنون میتوان مخاطبان را نوشت و در audience ها گروهبندی کرد، یک دامنه میتواند نامهای tracking و files خودش را داشته باشد، و یک کلید میتواند خودش را بچرخاند. یک تغییر، کد موجود را میشکند و زیر همین بخش فهرست شده است.
openemail.audiencesتازه است: فهرستهای نامدار از مخاطبان، باlist،get،create،update،delete،listContacts،addContactوremoveContact. هر فضای کاری یک audience پیشفرض دارد، همان کهbuiltinآنdefaultاست، که همهٔ مخاطبان را نگه میدارد و حذفشدنی نیست.openemail.contactsاکنون میتواند بنویسد.create،updateوdeleteبهlistوgetاضافه شدهاند، و هرکدام آدرس ایمیل را بهعنوان id میگیرند.openemail.domains.update()نام tracking و نام files مخصوص یک دامنه را تنظیم یا پاک میکند، وDomainResource.trackingوDomainResource.storageوضعیت هرکدام را گزارش میدهند.openemail.me.rotate()رازِ کلید فراخوان را جایگزین میکند و با کلید جدید بهطور کامل نتیجه میدهد. هیچ بازهٔ همپوشانیای وجود ندارد، پس راز قدیمی همان لحظه که فراخوانی بازمیگردد از کار میافتد.KeyResource.domainAllowlistیک کلید را به دامنههای کامل محدود میکند، در کنار آدرسهای تکی درaddressAllowlist. یک دامنه همهٔ آدرسهای روی آن را در بر میگیرد، از جمله آدرسهایی که پس از ساخت کلید ایجاد شدهاند.- پیوستها را میتوان با ارجاع فرستاد.
{ fileId }در کنار شکل درونخطی قرار میگیرد، وattachmentDeliveryانتخاب میکند که فایلها درون پیام حمل شوند، با پیوند دانلود جایگزین شوند، یا اندازهشان تصمیم بگیرد. - ده رویداد webhook تازه، بیست تا در مجموع: پاسخها، تحویلها، تأخیرها، مسدودسازیها، دانلودها و سه رویداد دامنه.
email.downloadedوقتی شلیک میشود که کسی فایلی را بگیرد که بهصورت پیوند دانلود بیرون رفته است. یک پیوند به همهٔ کسانی که پیام برایشان رفته خدمت میکند، پس این رویداد هیچ گیرندهای را نام نمیبرد.- چهار scope تازه:
contacts:write،audiences:read،audiences:writeوkeys:write. - نُه فیلد که پیشتر رشتههای آزاد بودند اکنون نوعهای نامدار دارند، از جمله
RecipientKind،ContactSource،RuleMatchModeوWebhookDeliveryStatus. همان رشتههای پیشین را میپذیرند و برمیگردانند.
const audience = await openemail.audiences.create({ name: 'Product updates' }) await openemail.contacts.create({ email: '[email protected]', name: 'Grace Hopper' })await openemail.audiences.addContact(audience.id, { email: '[email protected]' })چه چیزی در 0.1.0 میشکند
contacts.listبهجای آرایه،Page<ContactResource>برمیگرداند. ردیفها را ازpage.itemsبخوانید و تا وقتیpage.hasMoreدرست استpage.nextCursorرا دنبال کنید. دفترچهٔ نشانیها بیکران است، و آرایهٔ قدیمی بیآنکه چیزی بگوید در 200 ردیف متوقف میشد.API_SCOPES،ERROR_TYPES،MESSAGE_ENCRYPTION_FORMATS،RULE_ACTIONS،RULE_FIELDS،RULE_OPERATORSوWEBHOOK_EVENTSبهجای آرایه، شیءهای کلیددار هستند، پس هر عضو نامی دارد که با آن صدایش بزنید. مقادیر تغییری نکردهاند.contacts.listمخاطبانی را که هرگز به آنها ایمیلی نرفته بهجای ابتدا در انتها مرتب میکند، پس مخاطبی که تازه ساختهاید دیگر به بالای دفترچه نمیپرد.
import { API_SCOPES, WEBHOOK_EVENTS } from '@openemail/sdk' const scopes = Object.values(API_SCOPES)const subscribable = new Set<string>(Object.values(WEBHOOK_EVENTS)) const page = await openemail.contacts.list()for (const contact of page.items) send(contact.email)کدی که فقط از نوعهای مشتق استفاده میکرده بیهیچ تغییری کار میکند. ApiScope، WebhookEvent و بقیه همان نوعهایی هستند که بودند.
0.0.1
نخستین انتشار: برای هر نقطهٔ پایانی یک متد نوعدار، و بدون هیچ وابستگی زمان اجرا.
- ارسال: یک پیام، ارسال دستهای، ارسالهای زمانبندیشده، یک بازهٔ بازگردانی، و ترجمه به زبانی که گیرنده میخواند.
- قالبها: ساخت، نسخهبندی، انتشار، پیشنمایش و ارسال.
- ردیابی: بازشدنها، کلیکها، و خلاصهای برای هر پیام.
- صندوق پستی: رشتهها، پیشنویسها، برچسبها، مخاطبان و قواعد.
- فضای کاری: دامنهها، آدرسها، اعضا، نقشها و تنظیمات.
- webhook ها، همراه با راستیآزمای امضا که هرجا WebCrypto باشد اجرا میشود.
- رویدادهای تقویم، از جمله فایل ICS.
- صندوقهای یکبارمصرف، تنها بخشی که در مرورگر هم اجرا میشود.
- صفحهبندی با cursor روی هر فهرست، از راه
listAllوiterate. - دو کلاس خطا، و تلاشهای دوبارهای که نمیتوانند یک ارسال را تکراری کنند.
- ESM و CommonJS، روی Node 20+، Bun، Deno و Cloudflare Workers.