Zur Dokumentation springen
PHP

Entwürfe

`drafts->list`, `listAll`, `iterate`, `get`, `create`, `update` und `delete`.

Jede Methode

drafts.php
$page = $client->drafts->list(query: 'invoice', limit: 25);$draft = $client->drafts->get('draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8');echo count($page), ' ', $draft['subject'], PHP_EOL; $created = $client->drafts->create([    'to' => ['[email protected]'],    'cc' => [],    'bcc' => [],    'subject' => 'Your September invoice',    'html' => '<p>Draft body.</p>',    'from' => '[email protected]',    'threadId' => 'CAHk7pQ2x9LmZ4-mail.example.com',]); $updated = $client->drafts->update($created['id'], ['subject' => 'Revised']);$client->drafts->delete($updated['id']);

update behält die id des Entwurfs bei, der zurückgegebene Wert ist daher immer der übergebene. Eine unbekannte id ergibt einen 404, geworfen als NotFoundException, und keinen neuen Entwurf.

Die Felder eines Entwurfs sind die Schlüssel eines Arrays mit den Namen der API, der Thread, auf den ein Entwurf antwortet, ist also threadId. Ein Entwurf kommt als Array mit camelCase-Schlüsseln zurück, $draft['subject'] liest also den Betreff. Jeder Schreibvorgang antwortet nur mit object und id. Lesen Sie den ganzen Entwurf daher mit get.

list blättert wie threads->list. Das pageToken der API kommt als nextCursor zurück und geht als cursor: hinein, und listAll und iterate folgen ihm für Sie. iterate gibt einen Generator zurück, der einen Entwurf nach dem anderen liefert. Eine Seite enthält 25 Entwürfe, sofern limit: nicht bis zu 100 anfordert. query: nimmt die Suchsyntax von threads->list entgegen, und die Suche verlässt nie die Entwürfe. Eine Zeile besteht nur aus object und id. Rufen Sie für Empfänger, Betreff und Body daher get auf.

Die Entwurfsliste gibt kein hasMore an, hasMore ist daher true, sobald ein Cursor zurückkam. Der Server bietet einen an, wann immer eine Seite voll ist. Auf eine letzte Seite, die zufällig voll ist, folgt daher eine leere Seite.

Ein Entwurf wird als Thread mit dem Label DRAFT gespeichert, deshalb listet $client->threads->list(folder: 'draft') dieselben Entwürfe. get, update und delete beantworten eine gewöhnliche Thread-id mit einem 404, auch wenn threads->get sie öffnet. delete entfernt einen Entwurf endgültig. Er wandert nicht in den Papierkorb, und es gibt kein Rückgängig.

Um einen Entwurf zu senden, übergeben Sie seine id als draftId an emails->send. Der Entwurf liefert den Inhalt, der Versand den Umschlag. Ein Entwurf kann nicht mit template oder translate kombiniert werden.

send_draft.php
$client->emails->send([    'from' => '[email protected]',    'to' => '[email protected]',    'draftId' => 'draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8',]);

Parameter: drafts->create und drafts->update

toarray
Empfängeradressen als Liste von Strings, nicht in den Array-Formen, die `emails->send` akzeptiert, denn dieser Endpunkt fügt die Liste zu dem kommaseparierten String zusammen, den der Treiber erwartet. Ein String darf einen Anzeigenamen tragen, wie in `Ada Lovelace <[email protected]>`, aber ein Name mit einem Komma zerfällt in zwei kaputte Empfänger. Anders als bei `emails->send` verpackt der Client hier keinen einzelnen String in eine Liste, übergeben Sie also `['[email protected]']`. Bei create wird eine weggelassene Liste leer gespeichert. Bei update lässt ein weggelassenes Feld die gespeicherten Empfänger unverändert, da der Handler den Entwurf zuerst liest und zusammenführt.
ccarray
Cc-Adressen, in derselben Form wie `to`. Bei create leer, wenn weggelassen, und bei update unverändert, wenn weggelassen.
bccarray
Bcc-Adressen, in derselben Form wie `to`. Bei create leer, wenn weggelassen, und bei update unverändert, wenn weggelassen.
subjectstring
Der Betreff des Entwurfs, höchstens 998 Zeichen, das Zeilenlimit von RFC 5322. Bei create ist der Standard ein leerer String, und ein leerer Betreff wird als `(no subject)` gespeichert, ein Entwurf hat daher immer einen.
htmlstring
Der Entwurfstext als Markup, höchstens 1.000.000 Zeichen. Dieser Text setzt sich durch. `html` und `text` speisen dasselbe einzelne Nachrichtenfeld des Treibers, werden beide gesendet, wird dieses gespeichert.
textstring
Ein Nur-Text-Body, höchstens 1.000.000 Zeichen, der nur verwendet wird, wenn `html` fehlt. Der Entwurf speichert einen Body statt zweier Teile, hier übergebener Text kommt daher beim Lesen des Entwurfs unkonvertiert auf `html` zurück.
fromstring or null
Die Absenderadresse, die am Entwurf gespeichert wird, mit oder ohne Anzeigenamen. Bei create weggelassen, hat der Entwurf keinen Absender. Bei update wird sie aus dem gespeicherten Entwurf übernommen, wenn sie weggelassen wird. Der Treiber baut die gesamte Nachricht aus dem neu auf, was ihm übergeben wird, ein Teil-Patch, der sie fallen ließe, würde den gewählten Absender stillschweigend ändern. Ein leerer String oder null bei update löscht sie.
threadIdstring
Hängt den Entwurf an einen bestehenden Thread an, sodass er als Antwort gespeichert wird. Wie `from` wird der Wert bei update übernommen, wenn er weggelassen wird, denn die Nachricht ohne ihn neu aufzubauen würde die Antwort von ihrem Thread lösen. Ein leerer String bei update löst sie. Der Entwurf wird trotzdem als eigener Thread unter seiner eigenen id gespeichert und erscheint daher bei den Entwürfen und nicht im Thread, auf den er antwortet.

Lassen Sie ein Feld weg, um es zu behalten. null zu übergeben ist nicht dasselbe. Der Client sendet es, und jedes Feld lehnt es mit einem 422 invalid_parameter ab, außer from bei update, wo null den Absender löscht. Schicken Sie ein Array mit optionalen Werten durch array_filter($fields, static fn(mixed $value): bool => $value !== null), bevor Sie es übergeben. Auch der Body ist strikt. Ein Feld außerhalb dieser acht wird ebenso abgelehnt, und es gibt kein Feld für Anhänge.

Antwort: ein Entwurf (drafts->get)

objectstring
Immer `draft`.
idstring
Die id des Entwurfs, `draft-` gefolgt von einer UUID. Schreibvorgänge antworten nur mit `object` und `id` statt mit einem vollständigen Entwurf. Lesen Sie die id daher aus dem Ergebnis, statt die gesendete wiederzuverwenden.
toarray
Die Empfängeradressen, wie der Entwurf sie gespeichert hat, bloß und ohne Anzeigenamen. Eine leere Liste, nie null, wenn der Entwurf keine hat.
ccarray
Cc-Adressen wie gespeichert. Eine leere Liste, nie null, wenn der Entwurf keine hat.
bccarray
Bcc-Adressen wie gespeichert. Eine leere Liste, nie null, wenn der Entwurf keine hat.
subjectstring
Der gespeicherte Betreff, nie null. Ein ohne Betreff gespeicherter Entwurf zeigt `(no subject)`, den Platzhalter, den das Postfach speichert. Vergleichen Sie also damit, statt auf einen leeren String zu prüfen.
htmlstring
Der gespeicherte Body oder ein leerer String, wenn der Entwurf keinen hat. Auf dem Rückweg gibt es kein separates Textfeld, ein nur mit `text` gespeicherter Entwurf wird daher hier zurückgegeben.
fromstring or null
Die Adresse, mit der der Entwurf gespeichert wurde, nur gemeldet, solange der Workspace noch als sie senden kann. null bei einem Entwurf, der ohne Absender oder von einer inzwischen entfernten Adresse gespeichert wurde.
threadIdstring or null
Der Thread, auf den der Entwurf antwortet, oder null bei einem Entwurf, der eine neue Konversation beginnt.
attachmentsarray
Jeder Eintrag hat nur `filename` und `contentType`, weil Anhänge von Entwürfen als Namen und Typen ohne Inhalt gespeichert werden. Ein `update` leert diese Liste.