Zur Dokumentation springen
Java

Helfer und Konstanten

Was das Paket neben den Methoden des Clients noch definiert.

Statische Methoden

MethodeWas es ist
new OpenEmail(), OpenEmail.builder()Ein Client. Beide lesen die Umgebung für alles, was Sie weglassen.
OpenEmail.createTempMail()Ein Client für Wegwerf-Postfächer, der keinen API-Schlüssel trägt.
OpenEmail.verifyWebhookSignature()Prüft die Signatur einer Zustellung in konstanter Zeit, mit einem Fenster von fünf Minuten, das eine Duration ändert, und gibt das Ereignis zurück.
OpenEmail.toBase64()Base64-Text für die Bytes eines Anhangs.
OpenEmail.isApiKey()Ob ein Wert die Form oe_live_ oder oe_test_ hat. Eine Prüfung der Form, kein Beweis, dass der Schlüssel noch funktioniert.
OpenEmail.isAccessToken()Ob ein Wert die Form eines OAuth-Zugriffstokens hat: 1 bis 512 Zeichen, nicht mit oe_ beginnend.
OpenEmail.isSealed()Ob der Body einer Nachricht Ciphertext ist. false bei den beiden signierten Formaten, deren Bodys im Klartext eingegangen sind.
OpenEmail.resolveLanguage(), OpenEmail.languageByCode(), OpenEmail.isRtlLanguage()Die Abfragen, die eine Sprachauswahl braucht, über die mitgelieferte Tabelle Languages.ALL.
client.raw().request()Ruft einen Pfad auf, den noch keine Methode abdeckt, mit den Zugangsdaten und den Wiederholungsregeln des Clients.

Konstanten

Jede Wertemenge, die das TypeScript-SDK exportiert, ist eine finale Klasse in uk.openemail.constants, mit einer Konstante pro Mitglied unter denselben Namen, sodass WebhookEvents.EMAIL_DELIVERED für email.delivered steht. values() gibt die ganze Menge zurück, und so lässt sich auch ein Wert prüfen, der von außen kam.

Constants.java
List<String> events = WebhookEvents.values();List<String> scopes = List.of(ApiScopes.EMAILS_SEND, ApiScopes.THREADS_READ);boolean known = events.contains("email.delivered"); System.out.println(events.size() + " " + String.join(",", scopes) + " " + PageLimits.MAX_LIMIT + " " + known);
KonstanteWas sie enthält
OpenEmail.VERSIONDie Version des Pakets.
ApiScopesDas Scope-Vokabular, für einen Bildschirm zum Anlegen von Keys.
WebhookEvents, WebhookSignatureHeadersDie Events, die ein Endpunkt abonnieren kann, und die Namen der Header, die eine Zustellung mitführt.
ErrorTypesDas Fehlervokabular, das ApiException.type() zurückgibt.
PageLimitsDas größte und das standardmäßige limit der meisten seitenweisen Listen, MAX_LIMIT und DEFAULT_LIMIT: 100 und 25. Einige Listen nehmen mehr, und die Referenz jeder Methode sagt das.
RuleFields, RuleOperators, RuleActionsDas Vokabular, aus dem die Bedingungen und Aktionen einer Regel aufgebaut werden.
MessageEncryptionFormatsDie fünf Umschläge, die die Eingangsverarbeitung benennen kann. Drei davon sind versiegelt.
CredentialKinds, StepUpMethods, StepUpErrorCodesWelche Zugangsdaten me().get und me().ping beschreiben, wie ein Bestätigungscode geprüft wird, und die Codes, mit denen eine Bestätigung scheitern kann.
ThreadSorts, PeopleSorts, FileSorts und die anderen *SortsDie Reihenfolgen, nach denen eine Liste sortiert werden kann.
FormStatuses, BroadcastStatuses, SuppressionReasons und die anderen MengenDie Werte, die ein Feld einer Ressource annehmen kann. Jede Menge ist nach dem benannt, was sie enthält.
Languages.ALLJede Sprache, die ein übersetzter Versand oder eine Vorschau akzeptiert, mit ihrem Code, ihren Namen und ihrer Schreibrichtung.

Objekte

Eine Antwort ist das dekodierte JSON als Map<String, Object>. Das Paket baut nur dort einen eigenen Typ, wo es die Antwort formt. Jeder ist ein unveränderlicher Record in uk.openemail.result, und eine for-Schleife durchläuft seine Zeilen.

KlasseWas es trägt
Pageitems, hasMore und nextCursor, aus jedem list mit Seiten.
PeoplePageDasselbe plus seen, von contacts().listPeople.
TempMessagesPageDasselbe plus expiresAt, von tempMail().listMessages.
AddressBookPage, AddressBookunrestricted, addresses und domains, von addresses().list (mit hasMore und nextCursor) und addresses().listAll.
BatchResultitems, sent und failed, von emails().sendBatch.
TemplateSendsitems, total, page und pageSize, von templates().listSends.
PagedIterableEin Durchlauf über jede Seite, von jedem iterate: eine for-Schleife, stream() oder toList().
Body, RequestOptionsWas ein Aufruf entgegennimmt: einen Anfragekörper, der seine Reihenfolge behält und null-Werte annimmt, und die Optionen eines Aufrufs.

Jede Exception, die das Paket wirft, ist eine OpenEmailException: ApiException und ihre Unterklassen, NetworkException und WebhookSignatureException. Ein Fehler im Aufruf selbst wirft eine IllegalArgumentException, bevor etwas gesendet wird.

Was es bewusst nicht tut

  • Es validiert keinen Request-Body. Das Schema des Servers ist die einzige Kopie der Regeln, und eine zweite Kopie hier würde irgendwann eine Adresse ablehnen, die ein neuerer Server akzeptiert, in einer Version, die jemand vor zwei Jahren festgeschrieben hat.
  • Es formt eine Antwort nur auf eine Weise um: Die data-Liste einer Sammlung wird aus ihrer Hülle in einen der Typen oben gehoben. Jede andere Antwort kommt so zurück, wie die API sie gesendet hat, mit den camelCase-Schlüsseln der API.
  • Es hat keine asynchronen Methoden. Ein Aufruf blockiert seinen Thread, bis die Antwort eintrifft, was auf einem virtuellen Thread wenig kostet.