پرش به مستندات
PHP

کمکی‌ها و ثابت‌ها

آنچه بسته جز متدهای کلاینت تعریف می‌کند.

متدهای ایستا

متدچیست
OpenEmail::init(), OpenEmail::getClient()کلاینت مشترک را یک بار پیکربندی کنید، سپس از هر جا به آن دسترسی داشته باشید. اگر init هرگز اجرا نشده باشد، getClient() یکی را از محیط می‌سازد.
OpenEmail::resetClient()کلاینت مشترک را کنار می‌گذارد، پس getClient() بعدی یک کلاینت تازه می‌سازد، که همان چیزی است که یک آزمون میان موردهایش می‌خواهد.
new OpenEmail()، OpenEmail::createClient()یک کلاینت جداگانه. هر دو هر چیزی را که ندهید از محیط می‌خوانند.
OpenEmail::createTempMail()کلاینتی برای صندوق‌های یک‌بارمصرف که هیچ کلید API حمل نمی‌کند.
OpenEmail::verifyWebhookSignature()امضای یک تحویل را در زمان ثابت بررسی می‌کند، با پنجرهٔ بازپخش پنج‌دقیقه‌ای که toleranceSeconds: آن را تغییر می‌دهد. رویداد دیکدشده را برمی‌گرداند، و در هر شکستی WebhookSignatureException را پرتاب می‌کند.
OpenEmail::toBase64()Base64 برای بایت‌های پیوست، از یک رشته، یک منبع stream، یک SplFileInfo یا یک stream از نوع PSR-7.
OpenEmail::isApiKey()اینکه آیا یک مقدار شکل oe_live_ یا oe_test_ را دارد. بررسی شکل است، نه اثبات اینکه کلید هنوز کار می‌کند.
OpenEmail::isAccessToken()اینکه آیا یک مقدار شکل یک توکن دسترسی OAuth را دارد: 1 تا 512 نویسه، که با oe_ آغاز نمی‌شود.
OpenEmail::isSealed()اینکه آیا بدنهٔ یک پیام متن رمز است. برای دو قالب امضاشده که بدنه‌شان آشکار رسیده false است.
OpenEmail::resolveLanguage()، OpenEmail::languageByCode()، OpenEmail::isRtlLanguage()جست‌وجوهایی که یک انتخابگر زبان لازم دارد، روی جدول همراهِ Languages::ALL.
$client->close()هندل cURL کلاینت و اتصال پشت آن را آزاد می‌کند. کلاینتی که دیگر به آن ارجاعی نیست، وقتی PHP آن را آزاد می‌کند همین کار را می‌کند.

ثابت‌ها

هر مجموعه‌مقداری که SDK TypeScript صادر می‌کند یک کلاس final در OpenEmail\Constants است، با یک ثابت برای هر عضو با همان نام‌ها، پس WebhookEvents::EMAIL_DELIVERED برابر email.delivered است. values() کل مجموعه را برمی‌گرداند، و راه بررسی مقداری که از بیرون آمده هم همین است.

constants.php
use OpenEmail\Constants\ApiScopes;use OpenEmail\Constants\PageLimits;use OpenEmail\Constants\WebhookEvents; $events = WebhookEvents::values(); $scopes = [ApiScopes::EMAILS_SEND, ApiScopes::THREADS_READ]; $known = in_array('email.delivered', $events, true); echo count($events), ' ', implode(',', $scopes), ' ', PageLimits::MAX_LIMIT, ' ', $known ? 'known' : 'unknown', PHP_EOL;
ثابتمحتوای آن
OpenEmail::VERSIONنسخهٔ پکیج.
ApiScopesواژگان اسکوپ‌ها، برای صفحهٔ ساخت کلید.
WebhookEvents, WebhookSignatureHeadersرویدادهایی که یک اندپوینت می‌تواند مشترکشان شود، و نام هدرهایی که یک تحویل با خود دارد.
ErrorTypesواژگان خطا که ApiException::$type از آن مقدار می‌گیرد.
PageLimitsبزرگ‌ترین و پیش‌فرضِ limit: در بیشتر فهرست‌های صفحه‌بندی‌شده، MAX_LIMIT و DEFAULT_LIMIT: 100 و 25. چند فهرست بیشتر می‌پذیرند، و مرجع هر متد این را می‌گوید.
RuleFields, RuleOperators, RuleActionsواژگانی که شرط‌ها و کنش‌های یک قاعده از آن ساخته می‌شوند.
MessageEncryptionFormatsپنج پاکتی که فرایند دریافت می‌تواند نام ببرد. سه‌تای آن‌ها مهروموم‌شده‌اند.
CredentialKinds, StepUpMethods, StepUpErrorCodesاینکه me->get و me->ping کدام اعتبارنامه را توصیف می‌کنند، کد تأیید هویت چگونه بررسی می‌شود، و کدهایی که یک تأیید ممکن است با آن‌ها شکست بخورد.
ThreadSorts، PeopleSorts، FileSorts و دیگر *Sortsهاترتیب‌هایی که یک فهرست می‌تواند بر اساس آن‌ها مرتب شود.
FormStatuses، BroadcastStatuses، SuppressionReasons و دیگر مجموعه‌هامقدارهایی که یک فیلد از یک منبع می‌تواند بگیرد. هر مجموعه به نام چیزی که در خود دارد نام‌گذاری شده است.
Languages::ALLهمهٔ زبان‌هایی که یک ارسال یا پیش‌نمایش ترجمه‌شده می‌پذیرد، همراه با کد، نام‌ها و جهت نوشتارشان.

شیءها

پاسخ، همان JSON دیکدشده به شکل یک آرایهٔ انجمنی است. بسته فقط جایی شیئی از آنِ خودش می‌سازد که به پاسخ شکل می‌دهد، و هرکدام در OpenEmail\Result قرار دارد، تغییرناپذیر است، و روی ردیف‌هایش IteratorAggregate و Countable است.

کلاسآنچه با خود دارد
Pageitems، hasMore و nextCursor، از هر list صفحه‌بندی‌شده.
PeoplePageهمان به‌علاوهٔ seen، از contacts->listPeople.
TempMessagesPageهمان به‌علاوهٔ expiresAt، از tempMail->listMessages.
AddressBookPage, AddressBookunrestricted، addresses و domains، از addresses->list (همراه با hasMore و nextCursor) و addresses->listAll.
BatchResultitems، sent و failed، از emails->sendBatch.
TemplateSendsitems، total، page و pageSize، از templates->listSends.
OpenEmail\Http\HttpRequest, OpenEmail\Http\HttpResponseآنچه یک httpClient: دریافت می‌کند و برمی‌گرداند. var_dump()، print_r() و json_encode() سرآیند Authorization یک درخواست را به‌صورت [redacted] نشان می‌دهند، در حالی که var_export() و dump() در Symfony آن را همان‌طور که هست نشان می‌دهند.

هر استثنایی که بسته پرتاب می‌کند OpenEmail\Exception\OpenEmailException را پیاده‌سازی می‌کند: ApiException و زیرکلاس‌هایش، NetworkException، WebhookSignatureException و InvalidArgumentException، که برای اشتباهی در خودِ فراخوانی پرتاب می‌شود نه برای چیزی که API گفته است.

اندپوینتی که این هنوز پوششش نمی‌دهد

یک انتشار بسته هرگز نباید چیزی باشد که میان شما و اندپوینتی که همین حالا کار می‌کند فاصله بیندازد. $client->raw->request() یک مسیر و آرگومان‌های نام‌دار می‌گیرد و بدنهٔ دیکدشده را برمی‌گرداند، با اعمال اعتبارنامه، URL پایه، مهلت و سیاست تلاش دوبارهٔ کلاینت.

escape_hatch.php
$result = $client->raw->request(    '/labels',    method: 'POST',    query: ['dryRun' => true],    body: ['name' => 'Invoices'],    repeatable: true,); var_dump($result);

یک GET مانند هر خواندن دیگری دوباره تلاش می‌شود. هر متد دیگری یک بار فرستاده می‌شود مگر آنکه repeatable: true بدهید، که یعنی شما تأیید می‌کنید دو بار فرستادنش بی‌اشکال است. query: مقدارهای null یا خالی را کنار می‌گذارد، و apiKey: همان‌طور کار می‌کند که در هر متد دیگری.

کارهایی که عمداً انجام نمی‌دهد

  • هیچ بدنهٔ درخواستی را اعتبارسنجی نمی‌کند. اسکیمای سرور تنها نسخهٔ قواعد است، و نسخهٔ دومی در اینجا سرانجام نشانی‌ای را که سرور تازه‌تر می‌پذیرد رد می‌کرد، در نسخه‌ای که کسی دو سال پیش سنجاقش کرده.
  • هیچ وابستگی زمان اجرا جز افزونه‌های curl و json ندارد. کلاینت PSR-18 یک گزینه است، هرگز یک الزام نیست.
  • پاسخ را فقط به یک شکل تغییر می‌دهد: آرایهٔ data یک مجموعه از پاکتش بیرون کشیده می‌شود و در یکی از شیءهای بالا قرار می‌گیرد. هر پاسخ دیگری همان‌طور که API فرستاده، با کلیدهای camelCase در API، برمی‌گردد.

بررسی همخوانیِ بسته این را صادق نگه می‌دارد. وقتی یک متد TypeScript همتای PHP نداشته باشد، آرگومان‌های متفاوتی بگیرد، یا درخواست متفاوتی بفرستد، بیلد را می‌شکند.