Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Errore su invio newsletter

    Ciao ragazzi,
    come da oggetto ho una newsletter che ho impostato in maniera tale da ciclare ogni 50 utenti e fare l'invio, purtroppo se trova un indirizzo email scritto male va in errore e quindi si blocca.
    Come posso fare per far continuare l'invio anche se trova un indirizzo erratto?

    Vi scrivo il codice di seguito:

    codice:
    MYSQL2 = "SELECT MAX(mailing_cliente) AS mailing_cliente FROM tab_clienti"
            MYCMD2 = New OleDbCommand(MYSQL2, Conn)
    
            Max = MYCMD2.ExecuteScalar
    
            Dim i As Integer
    
    
            For i = 1 To Max
    
    
                Dim MYSQL3 As String
                Dim MYCMD3 As OleDbCommand
                Dim MYDR3 As OleDbDataReader
    
                MYSQL3 = "SELECT email_cliente FROM tab_clienti WHERE mailing_cliente = " & i & " AND elimina_cliente = false"
                MYCMD3 = New OleDbCommand(MYSQL3, Conn)
                MYDR3 = MYCMD3.ExecuteReader
    
                Dim Email, Email2, Destinatari As String
    
                If MYDR3.HasRows = True Then
                    Do While MYDR3.Read
    
                        Email = MYDR3.Item("email_cliente")
                        Email2 = Email + "; "
                        Destinatari = Destinatari + Email2
    
                    Loop
                End If
    
    
    
                Dim objMM As New MailMessage()
    
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "smtp.miodominio.com")
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25)
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "email@miodominio.com")
                objMM.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "miapass")
    
    
                'Set the properties
                objMM.To = ""
                objMM.Bcc = Destinatari
                objMM.From = "Dominio < email@miodominio.com>"
    
                'Send the email in HTML format
                objMM.BodyFormat = MailFormat.Html
    
                'Set the subject
                objMM.Subject = Titolo
    
                'Set the body - use VbCrLf to insert a carriage return
                objMM.Body = Riepilogo
    
                SmtpMail.Send(objMM)
    
    
                Destinatari = ""
    
                MYDR.Close()
                MYDR3.Close()
    
    
            Next
    Grazie mille

  2. #2
    puoi utilizzare il try catch?
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    Ciao RoBYCoNTe,
    sì l'avevo pensato, ma nel catch poi cosa dovrei considerare?
    E poi dovrei gestire anche il finally?

    Non l'ho praticamente mai usato il try catch per questo ero bloccato, sai darmi un aiuto?

    Grazie mille

  4. #4
    Certo che posso aiutarti, allora per quanto riguarda i catch dentro non devi metterci nulla (a me no che tu non voglia salvare qualcosa in un log per tenere traccia delle operazioni fallite), allora io utilizzo C# quindi l'esempio che ti riporto è relativo a questo linguaggio (non conosco la sintassi con cui dichiarare il try catch in vb(è quello che usi giusto?) altrimenti te lo avrei scritto in quel linguaggio):
    codice:
    MailMessage message = null;
    try
    {
            message = new MailMessage();
            // qui le operazioni per inviare...
    }
    catch (Exception e)
    {
            // Qui puoi utilizzare e.Message (contiene la descrizione dell'eccezione generata).
    }
    finally
    {
            message.Dispose();
            message = null;
    }
    Cmq ho una domanda da farti, ho completato ieri una news letter, non mi risulta che l'oggetto MailMessage vada in errore se l'indirizzo email è sbagliato, và in errore se l'indirizzo email non è passato nella sua forma corretta <nomeindirizzo@servizio.est>, tu hai a che fare con indirizzi di questo tipo? Cioè totalmente diversi da un indirizzo email?
    Potresti utilizzare un espressione regolare per verificare l'indirizzo, se questo non è valido a priori eviti totalmente il try catch (essendo questo un notevole pacco che rallenta l'app).

    spero di esserti stato d'aiuto.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  5. #5
    Grazie mille sei stato chiarissimo.
    In pratica se ho capito bene il try catch fa semplicemente "saltare" l'errore e continua ad eseguire la routine.

    Sì purtroppo è proprio come hai detto tu.
    Inizialmente non ho gestito un controlvalidator sul tipo di indirizzo email inserito, e quindi adesso quando si prova a fare l'invio ci sono tanti indirizzi che generano l'errore.
    Bisognerebbe fare un pò di pulizia per cancellare questi indirizzi sbagliati.

    Non appena testo il codice ti faccio sapere se è tutto ok.

    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.