Ir a la documentación
Ruby

Borradores

`drafts.list`, `list_all`, `iterate`, `get`, `create`, `update` y `delete`.

Todos los métodos

drafts.rb
page = client.drafts.list(query: "invoice", limit: 25)draft = client.drafts.get("draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8")puts page.items.size, draft[:subject] 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 conserva el id del borrador, así que el valor con el que responde es siempre el que pasaste. Un id desconocido es un 404, lanzado como OpenEmail::NotFoundError, y no un borrador nuevo.

Los campos de un borrador son argumentos nombrados con los nombres de la API, así que el hilo al que responde un borrador es threadId:. También se pueden pasar como un solo Hash. Un borrador vuelve como un Hash con claves Symbol, así que draft[:subject] lee el asunto. Cada escritura responde solo con object e id, así que lee el borrador completo con get.

list pagina igual que threads.list. El pageToken de la API vuelve como next_cursor y se pasa como cursor:, y list_all e iterate lo siguen por ti. iterate pasa cada borrador a un bloque, o devuelve un Enumerator sin bloque. Una página contiene 25 borradores salvo que limit: pida hasta 100. query: acepta la sintaxis de búsqueda de threads.list, y la búsqueda nunca sale de los borradores. Una fila es solo object e id, así que llama a get para obtener los destinatarios, el asunto y el cuerpo.

La lista de borradores no indica hasMore, así que has_more? es true siempre que vuelve un cursor. El servidor ofrece uno siempre que una página está llena, así que una última página que resulte estar llena va seguida de una página vacía.

Un borrador se guarda como un hilo con la etiqueta DRAFT, y por eso client.threads.list(folder: "draft") lista los mismos borradores. get, update y delete responden a un id de hilo normal con un 404, aunque threads.get lo abra. delete elimina un borrador para siempre. No va a la papelera y no se puede deshacer.

Para enviar un borrador, pasa su id a emails.send como draftId:. El borrador aporta el contenido y el envío aporta el sobre. Un borrador no se puede combinar con template ni con translate.

send_draft.rb
client.emails.send(  from: "[email protected]",  to: "[email protected]",  draftId: "draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8")

Parámetros: drafts.create y drafts.update

toArray<String>
Direcciones de destinatarios como un Array de Strings, no las formas de Hash que acepta `emails.send`, porque este endpoint une el Array en la lista separada por comas que quiere el driver. Una String puede llevar un nombre visible, como en `Ada Lovelace <[email protected]>`, pero un nombre que contiene una coma se parte en dos destinatarios rotos. A diferencia de `emails.send`, aquí la gema no envuelve una String suelta en un Array, así que pasa `["[email protected]"]`. Al crear, un Array omitido se guarda vacío. Al actualizar, un campo omitido deja intactos los destinatarios almacenados, ya que el handler lee primero el borrador y fusiona.
ccArray<String>
Direcciones en Cc, en la misma forma que `to`. Vacío al crear si se omite, e intacto al actualizar si se omite.
bccArray<String>
Direcciones en Bcc, en la misma forma que `to`. Vacío al crear si se omite, e intacto al actualizar si se omite.
subjectString
El asunto del borrador, de 998 caracteres como máximo, el límite de línea de RFC 5322. Al crear, por defecto es una String vacía, y un asunto vacío se guarda como `(no subject)`, así que un borrador siempre tiene uno.
htmlString
El cuerpo del borrador como marcado, de 1.000.000 de caracteres como máximo. Es el cuerpo que gana. `html` y `text` alimentan el único campo de mensaje del driver, así que enviar ambos guarda este.
textString
Un cuerpo de texto plano, de 1.000.000 de caracteres como máximo, que solo se usa cuando falta `html`. El borrador guarda un único cuerpo en lugar de dos partes, así que el texto que pongas aquí vuelve sin convertir en `html` cuando se lee el borrador.
fromString
La dirección del remitente que se guarda en el borrador, con o sin nombre visible. Si se omite al crear, el borrador no tiene remitente. Al actualizar, se arrastra desde el borrador almacenado si se omite. El driver reconstruye el mensaje entero a partir de lo que recibe, así que un parche parcial que la descartara cambiaría en silencio el remitente elegido. Una String vacía o nil al actualizar la borra.
threadIdString
Adjunta el borrador a un hilo existente para que se guarde como respuesta. Igual que `from`, se arrastra al actualizar si se omite, porque reconstruir el mensaje sin él desvincularía la respuesta de su hilo. Una String vacía al actualizar lo desvincula. El borrador se sigue guardando como un hilo propio con su propio id, así que se lista con los borradores y no dentro del hilo al que responde.

Omite un campo para conservarlo. Pasar nil no es lo mismo. La gema lo envía, y todos los campos lo rechazan con un 422 invalid_parameter salvo from al actualizar, donde nil borra el remitente. Llama a compact sobre un Hash de valores opcionales antes de pasarlo. El cuerpo también es estricto. Un campo fuera de estos ocho se rechaza de la misma forma, y no hay ningún campo para adjuntos.

Respuesta: un borrador (drafts.get)

objectString
Siempre `draft`.
idString
El id del borrador, `draft-` seguido de un UUID. Las escrituras responden solo con `object` e `id` en lugar de un borrador completo, así que lee el id del resultado en vez de reutilizar el que enviaste.
toArray<String>
Las direcciones de los destinatarios tal como las guardó el borrador, escuetas, sin ningún nombre visible. Un Array vacío, nunca nil, cuando el borrador no tiene ninguna.
ccArray<String>
Direcciones en Cc tal como están guardadas. Un Array vacío, nunca nil, cuando el borrador no tiene ninguna.
bccArray<String>
Direcciones en Bcc tal como están guardadas. Un Array vacío, nunca nil, cuando el borrador no tiene ninguna.
subjectString
El asunto guardado, nunca nil. Un borrador guardado sin asunto muestra `(no subject)`, el marcador que guarda el buzón, así que compara con eso en lugar de comprobar si hay una String vacía.
htmlString
El cuerpo guardado, o una String vacía cuando el borrador no tiene ninguno. No hay un campo de texto aparte en la salida, así que un borrador guardado solo con `text` se devuelve aquí.
fromString or nil
La dirección con la que se guardó el borrador, que solo se indica mientras el espacio de trabajo pueda seguir enviando con ella. Es nil para un borrador guardado sin remitente o desde una dirección que ya no existe.
threadIdString or nil
El hilo al que responde el borrador, o nil para un borrador que inicia una conversación nueva.
attachmentsArray<Hash>
Cada entrada tiene solo `filename` y `contentType`, porque los adjuntos de los borradores se guardan como nombres y tipos sin contenido. Un `update` vacía esta lista.