문서로 건너뛰기
PHP

변경 이력

패키지의 모든 릴리스를 최신순으로 정리했습니다.

0.0.1

첫 번째 릴리스입니다. 이 릴리스를 만든 시점의 TypeScript SDK 전체를 포함합니다: 41개 네임스페이스에 걸친 430개 메서드가 각각 TypeScript 이름 그대로 제공되며, 그 모두가 TypeScript 짝이 보내는 요청과 바이트 단위로 같은 요청을 보냅니다.

  • OpenEmail\OpenEmail에는 emails, threads, templates부터 providerImports, dnsConnections, account까지 모든 네임스페이스의 속성이 있으며, 각 속성의 메서드는 TypeScript 이름을 그대로 씁니다.
  • 요청 본문은 키가 API의 camelCase 이름을 그대로 쓰는 연관 배열이고, 옵션은 idempotencyKey:와 apiKey: 같은 명명된 인자입니다. 응답은 디코딩된 연관 배열로 돌아옵니다.
  • 페이지로 나뉘는 모든 리소스에는 Page 하나를 반환하는 list, 모든 항목을 배열로 반환하는 listAll, 그리고 다음 페이지에 이르렀을 때만 그 페이지를 가져오는 Generator를 반환하는 iterate가 있습니다. PeoplePage, TempMessagesPage, AddressBookPage, AddressBook, BatchResult, TemplateSends는 목록 이상을 담은 답을 전달합니다.
  • API의 거부는 ApiException 또는 오류 유형에 맞는 그 하위 클래스를 던지며, 여기에는 status, type, errorCode, param, docUrl, requestId, retryAfterSeconds, fields, body와, isValidation(), isStepUpRequired() 같은 메서드가 있습니다. 응답이 전혀 없으면 NetworkException을 던지며, 기한이 지났으면 isTimeout()이 true입니다. 호출 자체의 실수는 무엇이든 보내기 전에 InvalidArgumentException을 던집니다. 모두 OpenEmailException을 구현합니다.
  • new OpenEmail()와 OpenEmail::createClient()는 지정하지 않은 값을 OPENEMAIL_API_KEY, OPENEMAIL_ACCESS_TOKEN, OPENEMAIL_BASE_URL에서 읽고, OpenEmail::init(), OpenEmail::getClient(), OpenEmail::resetClient()는 공유 클라이언트 하나를 관리합니다. OpenEmail::createTempMail()은 자격 증명 없이 일회용 받은편지함을 엽니다.
  • accessToken:은 OAuth 액세스 토큰, 또는 토큰을 반환하는 호출 가능 객체를 받으며, 이 객체는 모든 요청 전에 호출됩니다. 모든 메서드는 호출 하나에 한해 다른 키로 실행하기 위한 apiKey:를 받고, tempMail 메서드는 inboxToken:을 받습니다. 자격 증명을 담는 모든 매개변수에는 #[\SensitiveParameter]가 표시되어 있습니다.
  • OpenEmail::verifyWebhookSignature()는 전달을 상수 시간으로 검사하고, 5분보다 오래된 것은 거부하며, 디코딩된 이벤트를 반환합니다. 서명은 대소문자를 가리지 않는 헤더 배열, $_SERVER, Symfony나 Laravel의 헤더 백, 또는 PSR-7 요청에서 읽습니다.
  • OpenEmail::toBase64(), isApiKey(), isAccessToken(), isSealed(), resolveLanguage(), languageByCode(), isRtlLanguage()는 TypeScript SDK의 헬퍼에 해당하며, 그 패키지 루트가 내보내는 모든 값 집합은 OpenEmail\Constants의 클래스입니다.
  • curl과 json 확장을 갖춘 PHP 8.2 이상만 있으면 되며, 그 밖에는 필요한 것이 없습니다. 요청은 클라이언트마다 하나의 cURL 핸들을 거치며, 이 핸들은 요청 사이에 연결을 열어 두고 pcntl_fork 후에는 새 연결을 엽니다. timeout:은 시도 하나 전체의 상한입니다. Psr18HttpClient를 쓰면 대신 Guzzle, Symfony HttpClient, 또는 다른 PSR-18 클라이언트를 거쳐 보냅니다.
  • 읽기, 발송, 그리고 반복해도 안전한 모든 쓰기는 408, 500, 502, 503, 504에서 백오프와 함께 재시도되며, 429에서는 Retry-After가 1분 이하일 때만 재시도됩니다. 모든 발송에는 재시도에서 재사용되는 멱등성 키가 붙습니다.
  • 클라이언트는 이 컴퓨터 외의 곳으로 암호화되지 않은 http:를 통해 자격 증명을 보내기를 거부하고, 0.0.0.0의 기본 URL을 거부하며, 요청을 쪼갤 수 있는 헤더를 거부하고, raw->request()가 기본 URL의 오리진을 벗어나는 것을 절대 허용하지 않습니다.