08. april 2004 - 21:59Der er
17 kommentarer og 7 løsninger
Check om der er nogle mails i indbakke (inbox)
Jeg har en supportgruppe der automatisk for en mail, hvis der kommer en mail i indbakken for vores infomails. Det kan godt være irriterende for dem, da der ind imellem kommer mange mails.
Derfor ville jeg godt fra min mailagent (særskilt nsf database) sætte en formel op, som checker om der er nogle mails i indbakken i inbox på info-databasen.
Hvis dette er tilfældet så skal der ex. hver time sende en mail til supportgruppen.
Mit spørgsmål er derfor, hvordan kan jeg checke, at der er nogle mails i inbox via en formel ?
Mød en af Nordens fremmeste eksperter i adfærdsdesign – Morten Münster, der bl.a. har skrevet ” Jytte fra marketing er desværre gået for i dag” – på Computerworld Cloud & AI Festival.
Det kommer lidt an på hvordan du sætter det op. Bliver mails fjernet fra ínbox når de er læst ? For så kan du jo lave en dbcolumn på inbox'en - som kører 1 gang i timen - og hvis den intet returnerer er der ikke kommet nogle mails. Hvorfor ligger agenten i en særskildt nsf fremfor at ligge i info-databasen ? Du må gerne være lidt mere specifik, om muligt.
Jeg kan også lægge agenten i info-databasen, men jeg har samlet mine agenter i en særskilt agent-database, hvor jeg nemt kan sætte op formler og hvem der skal have mailen.
Ja, mailsene bliver fjernet fra inbox og slettes eller flyttet til en anden mappe efter de er læst. Så hvis du kan lave noget med dbcolumn, så takker jeg.
Hvis du giver mig den kode du ellers ville lave i en agent, så er det meget flot
Flg. @DbColumn henter indholdet af afsenderfeltet fra de mails der er i indbakken (mappen ($inbox)).Hvis indholdet af ReturnValue er tomt (="") , er der ingen mails i inbox - ellers er der, og du kan så udfra det, lave en @mailsend fx. en gang i timen. ReturnValue:=@DbColumn( "":"NoCache" ; "servernavn" : "infodatabasenavn.nsf" ; "($inbox)" ;2 );
Det virker desværre ikke 100%. Jeg har lavet en agent direkte i info.nsf til test. ReturnValue:=@DbColumn( "":"NoCache" ; "" : "" ; "($inbox)" ;2 ); @If(ReturnValue!="";@Prompt([OK];"Reminder";ReturnValue);"");SELECT @All
1. Den tager og checker alle dokumenter. Dvs. i dette tilfælde 248, da det er det antal man kan finde i all viewet. Den prompter navnet på den først mail, som jo også er korrekt.
Jeg kan ikke se den formel, som gør det kun er de mails der er i $inbox jeg søger på. Den kan jeg jo ikke når $inbox desværre er en mappe og ikke et view. Hmm
Der er p.t. kun 5 mails i indbakken. Kan du give mig formlen, så det kun er den oversigt / de mails der søges på ?
($inbox) ER indbakken. @DbColumn( "":"NoCache" ; "" : "" ; "($inbox)" ;2 )læser kun i indbakken. Du skriver at der pt. kun er 5 mails i indbakken - hvis du fjerner alle mails fra indbakken, kan du se at formlen virker - eftersom at all og inbox umiddelbart viser det samme. Prøv at flyt de mails du har i indbakken til en anden mappe - så kan du se at det virker.
Det fungerer 99%. Der er korrekt, at den kun læser i inbox og den er også false, hvis ingen mails er. Hvis der så er bare 1 mail, så vil den også tage alle de mails der er i mapper og i sendt post. Det er jo ikke helt korrekt. Det er jo fordi der er en eller anden udvægelse for at jeg kun skal se de mails der er indkomne .. som i inbox oversigten.
Har du denne formel ?
Det jeg vil er at, hvis ReturnValue:=@DbColumn( "":"NoCache" ; "" : "" ; "($inbox)" ;2 ); er TRUE, så skal den sende 1 mail og derefter stoppe agenten, da jeg ikke ønsker at sende en mail pr. mail der er i listen.
Nej. Den sender 1 mail, uanset hvor mange mails der ligger i indbakken. Den kører på om der ligger noget i ReturnValue eller ej - og ikke på hvor meget der ligger.
Jeg håbede ellers du havde ret. Hmm desværre. Har lige fået 247 mails i @mail afsending. Den kører jo agenten til ende (247 gange), så jeg kan personligt godt se rent teknisk at den skal sende 247 mails. Kan man stoppe agenten efter 1. mailafsendelse ?
"Manuelt" kørt kører den korrekt - så koden fejler intet. Men hvis du kører agenten skeduleret og på alle (eller nye/redigerede siden sidst) dokumenter, går det jo galt - eftersom du så beder om at få den kørt ligeså mange gange som der er mails...
Du ville da have agenten i din agentbase ? Hvis du i agentbasen opretter en form, med et enkelt felt (fx. agentRunner) og opretter et dokument hvor agentRunner (fx) ="1" - kan du sætte agenten til at køre skeduleret, på de dokumenter der har et felt - agentRunner - med værdien 1. Det kan du selvfølgelig også gøre i maildb'en - men det er måske ikke så smart hvis der er brugere der har adgang til den. Så kører den kun een gang.
Ok. I infodatabasen opretter du en mail som kladde. I subject skriver du noget unikt, fx. "xy1214u". I agenten tilføjer du et søgekriterie med at subject skal indeholde "xy1214u". Agenten sætter du til at køre skeduleret - og på alle dokumenter i databasen. Antallet af mails med "xy1214u" er så afgørende for hvor mange mail der sendes (hvis der er mails i inbox, altså). Det er ikke den rigtige måde at gøre det på - så skal vi over i script - men det virker.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.