[Outlook 2K3 / VBA] Later verzenden

Pagina: 1
Acties:
  • 130 views sinds 30-01-2008
  • Reageer

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Hmmm, twijfelgevalletje OFF of P&W, maar ik waag me maar eens in OFF ;)

Het probleem:
Ik wil dat email die beantwoord wordt na 18.00 pas wordt verzonden op de volgende werkdag. No problem, dat maak ik wel even in VBA: Even wat spelen met DeferredDeliveryTime en wat date/time dingen knutselen en dan gewoon een knop naast de "verzenden" knop maken die hetzelfde doet als "verzenden", maar dan pas "later".

Even concreet: Het gaat om een bedrijf waar 's avond nogal eens wat avonduren wordt gewerkt. Alleen is het niet de bedoeling dat de klanten zien dat er om 23:00 een email is verstuurd en dus dient de mail pas om 9:00 op de volgende (werk)dag verstuurd te worden. Het rekenen met datums in VBA e.d. is mijn pakkie an en geen probleem. Daar zoek ik dus geen hulp voor ;)

Wat ik wil:
Ik wil dus naast de reguliere verzend knop een extra knop maken met "Later verzenden". Daarachter komt dus wat VBA te hangen die de properties van het huidige bericht instellen wanneer nodig en vervolgens gewoon "verzend" zoals de "reguliere knop" dat zou doen. Het enige wat je dus doet is zorgen dat de gebruiker niet telkens naar "opties" -> "Niet bezorgen voor..." hoeft te gaan en dat de tijd dus gewoon "vast" is ingesteld.

Een ge-photoshop-te screenshot van wat ik bedoel:
Afbeeldingslocatie: http://www.tweakers.net/ext/f/65936/full.gif
Zoiets zou het moeten worden. Als ik klik op de omcirkelde knop moet de email pas de volgende dag, niet voor 9:00 verzonden worden.

Let op: Wat ik niet wil:
Ik zoek geen "shortcuts" of "trucjes" om het makkelijker te maken voor de gebruiker om in het opties scherm te komen of om de "Niet bezorgen voor..."-tijd in te stellen. Dat betekent namelijk nog een aantal keren klikken (Datum + Tijd instellen). Ik wil gewoon een 2e "verzend" knop. Ik wil ook geen vage plugin's of andere rommel installeren. Ik wil ook geen andere mail client of het formulier dusdanig aanpassen dat het veld "niet bezorgen voor..." in de knoppenbalk terecht komt ofzo. Ook ben ik niet op zoek naar een manier om de mail headers te "spoofen" / "veranderen" zodat het lijkt alsof de mail later is verstuurd ofzo.

Mijn vraag:
Ik had eigenlijk wel verwacht dat als ik het formulier ga ontwerpen (van een nieuw bericht (of bericht beantwoorden)) dat er dan een "on_Send" event of iets dergelijks was. Dan was het simpel:
Visual Basic:
1
2
3
4
5
6
7
8
9
Private SomeThing_OnSend(Item as Email)
  If Time<=TimeSerial(9,0,0) Or Time>=TimeSerial(18,0,0) then
    If MsgBox ("Later verzenden?",vbYesNo+vbDefaultButton1+vbInformation)=vbYes then
      'Later verzenden als de gebruiker er voor kiest..
      Item.DeferredDeliveryTime = DateAdd("d",1,Date) + TimeSerial(9,0,0)
    end if
    Item.Send
  end if
End Sub

Note: Deze code is uit de losse pols (ja ja, na 0:00 gaat 'ie een dag te laat de deur uit, I know...Daar gaat het nu even niet om...).

Dit is ongeveer in grote lijnen wat ik wil. Maar er is geen "OnSend" event ofzo. Sterker: ik kan geen knop op de balk maken en daar een willekeurige macro achter hangen (althans, ik weet dus niet hoe) waarbij ik een referentie krijg naar het huidige actieve object (dus het actieve "new mail" / "reply mail" scherm waar de gebruiker zijn email zojuist in heeft getyped).

Het is helaas wat te vaag om goed op te kunnen Googlen, ik heb het wel getracht maar dat leverde telkens alleen maar macro's op, en niet hoe die knop aan te maken of hoe een referentie naar het actieve mail object te krijgen (zoals je in bovenstaand voorbeeld ziet stel ik me voor dat je toch een referentie moet krijgen ("Item" in dit geval) naar het actieve object).

Wellicht zoek ik verkeerd, of denk ik de verkeerde richting op. In dat geval gaarne een pointer in de juiste richting ;)

Nu ik het zo terug lees misschien toch wel weer meer P&W voer... ik weet het niet... *twijfelt*

[ Voor 55% gewijzigd door RobIII op 05-09-2005 15:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

/me graaft in zijn geheugen
Volgens mij moet je het mailitem te pakken kunnen krijgen via het inspector-object (ActiveInspector).

Een knopje maken is hetzelfde als in de rest van de suite: zodra je een sub routine hebt kun je die als macroknopje op de werkbalk zetten met de gui->rechtsklik-->aanpassen

offtopic:
vba hoort hier wel


yep: dit werkt: met een knopje
code:
1
2
3
4
5
Sub DevSchuurTest()
    Dim m As MailItem
    Set m = ActiveInspector.CurrentItem
    MsgBox m.Subject
End Sub

[ Voor 20% gewijzigd door Lustucru op 05-09-2005 15:25 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
:D _/-\o_
Soms is een antwoord ZO simpel :D

ActiveInspector did the trick... Dat ik daar zo'n lap tekst voor heb getyped :D
Nu nog even kijken hoe ik het icon van zo'n knop wijzig :X Ook simpel.

De uiteindelijke (werkende, niet "productie" hoor ;) ) code:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub SendDelayed()
    Dim oMail As MailItem
    
    On Error GoTo errSendDelayed
    Set oMail = ActiveInspector.CurrentItem
    If Time <= TimeSerial(9, 0, 0) Or Time >= TimeSerial(18, 0, 0) Then
        If MsgBox("Wilt u deze email later verzenden?", vbYesNo + vbDefaultButton1 + vbQuestion) = vbYes Then
            oMail.DeferredDeliveryTime = DateAdd("d", IIf(Time < TimeSerial(9, 0, 0), 0, 1), Date) + TimeSerial(9, 0, 0)
        End If
    End If
    oMail.Send
    Exit Sub
errSendDelayed:
    MsgBox "Fout bij 'later verzenden': " & Err.Number & vbCrLf & Err.Description, vbCritical + vbApplicationModal
End Sub


Overigens, mocht iemand hier nog mee gaan stoeien: Je hebt waarschijnlijk ook dit nodig om je project digitaal te signen zodat je niet telkens die irritante waarschuwingen krijgt. Zo hoef je de beveiliging niet omlaag te zetten en kun je toch de waarschuwingen voorkomen: Gewoon netjes signen.

d:)b Niesje!

[ Voor 107% gewijzigd door RobIII op 05-09-2005 16:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij