Archief - [PROG]C# [ASP.Net] Mailinglist opsplitsen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

HoAxKe

Legacy Member
Voor een project zou ik moeten kunnen zorgen dat een hoop mails in verschillende reeksen worden onderverdeeld, en dat deze reeksen worden verstuurd met telkens 15 minuten tussen. Is dit mogelijk met een simpele ASP.Net pagina? Kan iemand hierover meer info verschaffen?

sebbonny

Legacy Member
HoAxKe zei:
Voor een project zou ik moeten kunnen zorgen dat een hoop mails in verschillende reeksen worden onderverdeeld, en dat deze reeksen worden verstuurd met telkens 15 minuten tussen. Is dit mogelijk met een simpele ASP.Net pagina? Kan iemand hierover meer info verschaffen?

Goh, ik weetni in hoeverre een timertje te schrijven is in c#, moet zeker mogelijk zijn zeker? Je kan dat timertje dan laten lopen en dan laten controleren wanneer teller%15 = 0, en als die voorwaarde vervuld is, laat je de mail versturen naar een bep reeks.

HoAxKe

Legacy Member
Ja, het probleem is dat het ASP.Net is he, dus dat als men de pagina vervest, deze timer dan toch ook terug 0 is, of da als je naar een andere pagina gaat, de timer weg is ...

sebbonny

Legacy Member
HoAxKe zei:
Ja, het probleem is dat het ASP.Net is he, dus dat als men de pagina vervest, deze timer dan toch ook terug 0 is, of da als je naar een andere pagina gaat, de timer weg is ...

ahja, had ik ni aan gedacht, tzal moeilijk zijn dan om da op te lossen zeker?

HoAxKe

Legacy Member
Hehehehe, denket ook. Maar ik weet dat er bij mijn php server iets is als CRON jobs. Is er dan een manier waarop ik CRON jobs kan aanmaken in ASP.Net ofzo?

sebbonny

Legacy Member
HoAxKe zei:
Hehehehe, denket ook. Maar ik weet dat er bij mijn php server iets is als CRON jobs. Is er dan een manier waarop ik CRON jobs kan aanmaken in ASP.Net ofzo?

Denk da ni, want als ik gisteren goed heb opgelet tijdens Linux, is CRON = Linux, maar misschien is er wel een alternatief...

Yngwie

Legacy Member
Heeft asp.net geen application-scope objecten zoals bv bij JavaServerFaces? dan kunt ge bv u teller daarin bijhouden op de server

passero

Legacy Member
sessie variabelen gebruiken misschien.

Ik zou het zo doen:

Op de pagina heb je een status staan die eigenlijk om de 15min een request doet naar de server (kan je qjqx voor gebruiken). Op de server hou je de begintijd bij en als het verchil >= 15min is verstuur je de reeks en zet je de tijd op de laatste uitvoering.

Maw: je houdt op de server gewoon bij wanneer je de laatste reeks hebt verstuurd. Via een pagina die je automatisch laar refreshen controleer je wanneer de 15min voorbij zijn. Je zal dus ook wat javascript nodig hebben maar dat is niet zo moeilijk denk ik

Obliv`

Legacy Member
Hieronder staat de code die ik gebruik om een nieuwsbrief te verzenden (+- 10.000 ontvangers). Deze functie situeert zich in de Logic laag van mijn applicatie, boven deze laag zit een Service laag. Vanuit de UI roep ik een service op om deze functie asynchroon uit te voeren.

In mijn web/app config staan parameters om te zeggen na hoeveel mails hij moet pauzeren en hoelang hij moet pauzeren.

Code:
        Public Shared Function SendEmail(ByVal newsLetter As Courses.DataTransferObjects.NewsLetter, ByVal receipients() As Courses.DataTransferObjects.Recipient) As Boolean
            Dim returnValue As Boolean = True
            Dim mailMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage
            Dim receipient As Courses.DataTransferObjects.Recipient= Nothing
            Dim sentMessage As Courses.DataTransferObjects.SentMessage = Nothing
            Dim pauseAfter As Integer = CInt(System.Configuration.ConfigurationManager.AppSettings.Item("MailMessage.Pause.After"))
            Dim pauseDuration As Integer = CInt(System.Configuration.ConfigurationManager.AppSettings.Item("MailMessage.Pause.Duration"))
            Dim count As Integer = 0

            mailMessage.From = New System.Net.Mail.MailAddress(newsLetter.Emailaddress, newsLetter.Name)
            mailMessage.Subject = newsLetter.Subject
            mailMessage.Body = newsLetter.Message
            mailMessage.IsBodyHtml = True

            For Each receipient In receipients
                Try
                    returnValue = Courses.Logic.Email.GetLogic().Send(mailMessage, New System.Net.Mail.MailAddress(receipient.Emailaddress, receipient.FirstName & " " & receipient.LastName))
                Catch ex As System.Exception
                    returnValue = False
                End Try

                If returnValue = True Then
                    sentMessage = New Courses.DataTransferObjects.SentMessage
                    sentMessage.NewsLetterId = newsLetter.Id
                    sentMessage.ReceipientId= receipient.Id

                    Courses.Plugins.PluginHandler.SentMessage.Create(sentMessage)
                End If

                count += 1

                If count = pauseAfter Then
                    System.Threading.Thread.Sleep(pauseDuration)
                    count = 0
                End If
            Next

            Return returnValue
        End Function

De code is zeer basis. Als de mail wordt verzonden, wordt dat gelogd zodat de ontvanger de mail niet nog eens aan krijgt als hij opnieuw wordt verzonden. Er wordt geen rekening gehouden met mailboxes die over quota zitten of e-mailadressen die niet meer bestaan.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan