Avatar billede mortenfn Nybegynder
27. juli 2009 - 00:44 Der er 6 kommentarer og
1 løsning

Send mail hver 10. minut via SMTP med VB6

Hej Experter

Jeg har oprettet et VB6-script der læser data fra en fil og sender dem til en mailadresse - fint nok.

Scriptet sender fint nok når jeg manuelt trykker på en commando-knap.

Jeg vil gerne have scriptet til automatisk at sende mailen hver 10. minut, jeg forsøger med Timer(), men det vil kun sende mailen en gang.

Er der hjælp at hente eller ligger der en spærrer et eller andet sted der forhindre mit ønske.


Hilsen Morten
Avatar billede arne_v Ekspert
27. juli 2009 - 01:46 #1
Hvad med at lave en EXE som sender en email og afslutter - og så køre den EXE hver 10. minut med Windows scheduler.
Avatar billede Slettet bruger
27. juli 2009 - 02:28 #2
Nu har jeg ingen erfaring med Visual Basic, men det kunne måske gøres således (generel kode):

funktion loop {
    //Masser af kode
    timer(loop, 10:00);
}

loop();
Avatar billede mrgumble Nybegynder
27. juli 2009 - 07:52 #3
Hvis der fast skal sendes en mail hver 10. min hele tiden, er det bedre at du opretter en opgave i Opgavestyring i Windows.
Hvis du løser det med kode i dit program, risikerer du, at programmet støder på en fejl og stopper og bliver der ikke sendt flere mails fremover. Hvis du opretter det som en opgave, bliver programmet startet fast hver 10. min (det er vel et simpelt lille program, så det gør ikke noget); går programmet ned med fejl misser du blot en enkelt e-mail.

Men jeg skal lige høre; er det et Visual Basic program eller et VBS script?
Avatar billede mortenfn Nybegynder
27. juli 2009 - 10:19 #4
God morgen!

arne_v og mrgumble -> Visual Basic 6.0 (det gamle) forlaget løser ikke peroblemt, men argumentation omkring fejl er god.

Kimsey0 -> jeg bruger Timer-funktionen, loop ændre ikke på problemet.


Hilsen Morten
Avatar billede mrgumble Nybegynder
27. juli 2009 - 10:29 #5
Forlaget???
Hvad er der galt med at lave opgave styring?

Timer-enheden i VB6 mindes jeg, kan max tage ca. 65 sekunder (65 535 microsekunder).
Så løsningen er, at du sætter din timer til 60 sekunder og spørger om der er gået 10 min siden sidst. Det er skrevet i følgende pseudo-kode:

Dim LastEvent as Date/Time 'Skal være en global variabel

Sub Timer()

If LastEvent + 10*60 seconds < Now() Then
  Call SendEmail
  LastEvent = Now()
End If
End Sub
Avatar billede mortenfn Nybegynder
27. juli 2009 - 11:08 #6
Jeg har lagt en loop ind før timeren så timeren kører 10 gange 60 sec. før den sender.

jeg har også forsøgt uden loop og prøvet at sende hver 30 sec., jeg har lavet en counter der skriver i en text-bos, så jeg kan følge med. Tælleren starter fint forfra hver gang der er gået de 30 sec.

jeg har også forsøgt If counter = 30 Then send

jeg er 99% sikker på at det er ikke timeren/counter der er problemet.
Avatar billede mortenfn Nybegynder
19. maj 2012 - 22:49 #7
opgivwt
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester