Planifikimi dhe anulimi
`scheduledAt`, `emails.reschedule`, `emails.update` dhe `emails.cancel`.
Dërgimi më vonë
message = {from: "[email protected]", to: "[email protected]", subject: "Your September invoice", text: "Invoice attached."} client.emails.send(message, scheduledAt: "PT1H")client.emails.send(message, scheduledAt: Time.utc(2027, 1, 1, 9))client.emails.send(message, scheduledAt: "2027-01-01T09:00:00.000Z")Një Time ose DateTime, një çast ISO 8601 si String, ose një kohëzgjatje si PT1H ose P2D. Deri në një vit përpara, kurrë në të kaluarën. Një argument me fjalë kyçe pranë Hash-it ia shton fushën një mesazhi që e ndërtuat më parë.
Një Date e Ruby-t dërgohet si datë e zhveshur, si 2027-01-01, që API-ja e lexon si mesnatë UTC të asaj dite. Jepni një Time, si Time.utc(2027, 1, 1, 9), kur ora ka rëndësi.
Zhvendosja dhe ndalimi
message = {from: "[email protected]", to: "[email protected]", subject: "Your September invoice", text: "Invoice attached."} queued = client.emails.send(message, scheduledAt: "PT1H") client.emails.reschedule(queued[:id], Time.now + 86_400)client.emails.cancel(queued[:id])Mund të ndalen vetëm mesazhet queued dhe scheduled. Çdo gjë më përpara ngre një OpenEmail::ConflictError, sepse një pjesë e tij është tashmë në kutinë postare të dikujt. Anulimi i një mesazhi tashmë të anuluar ka sukses dhe nuk ndryshon asgjë.
Për të gjetur çfarë pret të niset brenda një dritareje kohore, listoni me status: ["scheduled", "queued"] dhe me scheduled_from: e scheduled_to:, ashtu siç bën kalendari i aplikacionit.
Ndryshimi para se të niset
emails.update ndryshon një mesazh që nuk është nisur ende: kur niset, me scheduledAt; çfarë thotë, me subject, html dhe text; me cilën adresë del, me from; dhe kujt i shkon, me to, cc dhe bcc. Dërgoni cilatdo prej tyre bashkë, dhe një fushë që e lini jashtë e ruan vlerën e saj. Një listë marrësish e zëvendëson plotësisht atë të ruajtur. Kjo është ajo që bën redaktimi i një mesazhi të planifikuar në kalendarin e aplikacionit.
updated = client.emails.update( "msg_3f9a1c07d2b84e6a9c5b1f20", subject: "Your September invoice, corrected", to: ["[email protected]", "[email protected]"], scheduledAt: Time.utc(2026, 10, 5, 8)) puts updated[:status], updated[:subject], updated[:scheduledAt]from kontrollohet njësoj si në një dërgim, ndaj duhet të jetë një adresë në emër të së cilës çelësi mund të dërgojë. Një mesazh i përkthyer kur u pranua e ruan tekstin e miratuar, ndaj një subject, html ose text i ri për të jep një 409 translation_locked, dhe një mesazh që u enkriptua para se të planifikohej e ruan tekstin dhe marrësit e vet. Në vend të kësaj, anulojini ato dhe dërgojini sërish.
Një dritare anulimi në vend të saj
message = {from: "[email protected]", to: "[email protected]", subject: "Your September invoice", text: "Invoice attached."} held = client.emails.send(message, cancellableForSeconds: 30) puts held[:status], held[:cancellableUntil]Një mesazh i planifikuar është tashmë i anulueshëm derisa të niset, pra të dyja nuk mund të kombinohen dhe serveri e refuzon. Përdoreni këtë për një dritare anulimi te një mesazh i menjëhershëm.
Parametrat: planifikimi
scheduledAtTime, DateTime or String- Kur të dërgohet, te `emails.send`: një Time ose DateTime, një çast ISO 8601 si String, ose një kohëzgjatje si `PT1H` ose `P2D`. Një Time ose DateTime dërgohet si çast UTC, një String ashtu siç është, dhe një Date e Ruby-t si datë e zhveshur që do të thotë mesnatë UTC. Të paktën një sekondë në të ardhmen dhe më së shumti 365 ditë përpara, ku shkelja e secilit kufi jep një `validation_error` te `scheduledAt`. Gjuha natyrore nuk pranohet, sepse analizimi i gabuar i “të martën e ardhshme” e dërgon një mesazh në një kohë që nuk mund të kthehet pas.
cancellableForSecondsInteger- Një dritare për anulimin e dërgimit te një dërgim i MENJËHERSHËM: një Integer nga 0 deri në 900, me 0 si parazgjedhje. Çdo vlerë mbi 0 refuzohet bashkë me `scheduledAt`, i cili është tashmë i anulueshëm derisa të niset, dhe një mesazh i mbajtur në këtë mënyrë qëndron në `queued` dhe jo në `scheduled`. Është i njëjti mekanizëm shtyrjeje me një vonesë të shkurtër.
idStringe detyrueshme- Id-ja `msg_` dhe argumenti i parë i `emails.cancel`, `emails.reschedule` dhe `emails.update`. Ato kërkojnë `emails:send` dhe jo një fushë të tyren, dhe e kërkojnë id-në brenda hapësirës së punës së vetë çelësit, ndaj një id që i përket një hapësire tjetër jep një `not_found_error` njësoj si një id që nuk ka ekzistuar kurrë.
scheduled_atTime, DateTime or Stringe detyrueshme- Koha e re, si argumenti i dytë i `emails.reschedule`, e lexuar me të njëjtat rregulla dhe brenda së njëjtës dritare një-vjeçare. Është e vetmja gjë që ndryshon `reschedule`, dhe klienti nuk dërgon asgjë tjetër. Një kohëzgjatje është relative ndaj çastit kur e lexon SERVERI, ndaj një riplanifikim i riprovuar bie pak më vonë se sa do të binte i pari: më vonë, kurrë më herët.
api_keyString- Vepron me këtë çelës në vend të atij të klientit, në cilëndo nga tri thirrjet.
Përgjigje
cancel, reschedule dhe update kthejnë secili gjithë mesazhin si një Hash me çelësa Symbol.
objectString- Gjithmonë `email`. Këto thirrje përgjigjen me gjithë mesazhin dhe jo me një konfirmim, ndaj nuk duhet marrë sërish asgjë për të parë çfarë ndryshoi. `emails.send` kthen të njëjtën formë plus `replayed`.
idString- Doreza `msg_`. E qëndrueshme gjatë gjithë jetës së mesazhit dhe id-ja që merr çdo thirrje tjetër për të.
statusString- `cancelled` pas një anulimi dhe `scheduled` pas një riplanifikimi, edhe për një mesazh që ishte vetëm `queued` pas një dritareje anulimi, të cilin riplanifikimi e kthen në një planifikim të vërtetë. Mund të zhvendosen ose të ndalen vetëm mesazhet `queued` dhe `scheduled`. Çdo gjë më përpara jep një `conflict_error` me kodin `email_not_cancellable`, sepse një pjesë e tij është tashmë në kutinë postare të dikujt.
scheduledAtString or nil- Çasti ISO 8601 kur mesazhi duhet të niset. Vendoset si për një dritare anulimi, ashtu edhe për një dërgim me `scheduledAt`, sepse të dyja janë një mekanizëm i vetëm, dhe është nil te një dërgim i thjeshtë i menjëhershëm.
cancellableUntilString or nil- Kur anulimi pushon së funksionuari, që është i njëjti çast si `scheduledAt` në të dyja rrugët e shtyra. nil te një dërgim i menjëhershëm, i cili ka ikur tashmë kur kthehet thirrja.
sentAtString or nil- Kur u nis vërtet mesazhi. nil sa kohë pret, dhe nil përgjithmonë te një mesazh i anuluar.
messageIdString or nil- Message-ID sipas RFC 5322, nil derisa të ekzistojë MIME-ja, ndaj gjithmonë nil te një mesazh mbi të cilin mund të veprojnë këto thirrje. Nuk është diçka me të cilën i drejtoheni API-së, as ajo me të cilën kthehet një kthim i mëvonshëm: shërbimi i dërgimit e rishkruan header-in në dalje.
threadIdString or nil- Thread-i të cilit i përket ky mesazh, i marrë nga kërkesa dhe i rishkruar me atë që raporton transporti pasi dërgon. nil kur nuk është përgjigje.
transportString or nil- Si u nisën bajtet, dhe nil deri në nisje, ndaj nil te çdo mesazh që mund të kthejë një anulim ose një riplanifikim. Një dërgim në modalitetin e testimit regjistron `test`, dhe mund të shfaqet një transport që ky gem ende nuk e emërton, ndaj trajtojeni një vlerë të panjohur si informacion dhe jo si gabim.
attemptsInteger- Sa herë e ka marrë përsipër nisja këtë rresht. Rritet me çdo marrje përsipër dhe jo me një dërgim të suksesshëm, dhe është 0 për çdo gjë që pret ende.
lastErrorString or nil- Dështimi i fundit i regjistruar për mesazhin, nil sa kohë që asgjë nuk ka dështuar. Një dërgim i shtyrë, puna e të cilit nuk mund të futej në radhë, shkruhet këtu si `Could not schedule: …` dhe kalon në `failed`, që është mënyra e vetme si një mesazh i planifikuar pushon së qeni i anulueshëm pa e kërkuar askush.
fromString- Adresa me të cilën mesazhi u autorizua të dilte: `from` që u dërgua, e ruajtur e zhveshur dhe me shkronja të vogla. Çdo emër shfaqjeje hiqet këtu, sepse filtri `from:` i `emails.list` krahason sipas barazisë.