Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - SendAsync()
Forum - C# / VB.NET - SendAsync() - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:19
Venerdì, 26/06/2009
...da me solo "explorer.exe" prende 15 MB di RAM, quindi è un buon risultato! :rotfl:

PM Quote
Avatar
ivan.ruotolo (Normal User)
Newbie


Messaggi: 2
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 13:14
Martedì, 30/06/2009
Ciao ragazzi soltanto voi potete aiutarmi, devo mandare una e-mail ai miei clienti con allegata la fattura in pdf, per singolo cliente ci riesco ma per tutti no..

potete nviarmi il codice che con il quale avete risolto il problema ??

io vi allego il mio per farvi vedere come faccio a generare il file da db in sql..

Aspetto una vostra risposta attaccato al pc....
Grazie mille



Spett. Colleghi.

Ho in problema che non riesco a risolvere, vi chiedo l'enorme aiuto per finire il mio programmino.
Sono in combutta con un programma per creare fatture ed inviarle via email, tutto funziona, quando genero la fattura per singolo cliente ma ora devo generare un ciclo che generi tutte le fatture di fine mese  verifichi tutti i clienti ed in automatico mi invii le fatture a tutti per email. potete darmi una mano per piacere ???

Vi allego il codice che mi genera uno l'anteprima e l'altro genera la fattura.

1
++++++++++++++++++anteprima+++++++++++++++++++
Private Sub TestaFatturaDataGridView_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TestaFatturaDataGridView.CellContentDoubleClick
        Dim NrFattura As Integer
        Dim DataFattura As Date
        Dim Anno As String
        Dim Logon As New CrystalDecisions.Shared.TableLogOnInfo

        DataFattura = TestaFatturaDataGridView.SelectedRows.Item(0).Cells(1).Value
        NrFattura = Int(TestaFatturaDataGridView.SelectedRows.Item(0).Cells(0).Value)
        Anno = CStr(Year(DataFattura))
        Logon.ConnectionInfo.DatabaseName = "xxxxxxx"
        Logon.ConnectionInfo.ServerName = "xxxxxxx"
        Logon.ConnectionInfo.UserID = "xxxxxxx"
        Logon.ConnectionInfo.Password = "xxxxxxx"
        Logon.ConnectionInfo.IntegratedSecurity = False
        frmAnteprima.FatturaPDF1.Database.Tables("TestaFattura").ApplyLogOnInfo(Logon)
        frmAnteprima.FatturaPDF1.Database.Tables("CorpoFattura").ApplyLogOnInfo(Logon)
        frmAnteprima.FatturaPDF1.RecordSelectionFormula = "{TestaFattura.NrFattura} = " & NrFattura
        frmAnteprima.ShowDialog()
        frmAnteprima.Dispose()
    End Sub
++++++++++++++++++generazione file in pdf+++++++++++++++++++

    Private Sub btnInvioPDF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInvioPDF.Click
        Dim NrFattura As Integer
        Dim Path As String
        Dim FileName As String
        Dim DataFattura As Date
        Dim Anno As String
        Dim Mese As String
        Dim ACapo As String
        ACapo = Chr(13) + Chr(10)
        Path = System.IO.Directory.GetCurrentDirectory + "\FATTUREPDF"
        Path = "PERCORSO DOVE RECUPERA IL IL VOLANTINO"
        If Not System.IO.Directory.Exists(Path) Then
            System.IO.Directory.CreateDirectory(Path)
        End If
        NrFattura = Int(TestaFatturaDataGridView.SelectedRows.Item(0).Cells(0).Value)
        DataFattura = TestaFatturaDataGridView.SelectedRows.Item(0).Cells(1).Value
        Anno = CStr(Year(DataFattura))
        Mese = CStr(Format(DataFattura, "MMMM"))
        Path = Path + "\" + Anno + "\" + Mese
        If Not System.IO.Directory.Exists(Path) Then
            System.IO.Directory.CreateDirectory(Path)
        End If
        FileName = CStr(NrFattura) + "_" + CStr(Year(DataFattura)) + CStr(Format(Month(DataFattura), "00")) + CStr(Microsoft.VisualBasic.DateAndTime.Day(DataFattura)) + "_" + DenominazioneTextBox.Text + ".pdf"
        Path = Path + "\" + FileName

          Dim Logon As New CrystalDecisions.Shared.TableLogOnInfo

        Logon.ConnectionInfo.DatabaseName = "XXXXXXXXXX"
        Logon.ConnectionInfo.ServerName = "XXXXX"
        Logon.ConnectionInfo.UserID = "XXXXX"
        Logon.ConnectionInfo.Password = "XXXXX"
        Logon.ConnectionInfo.IntegratedSecurity = False

        frmAnteprima.FatturaPDF1.Database.Tables("TestaFattura").ApplyLogOnInfo(Logon)
        frmAnteprima.FatturaPDF1.Database.Tables("CorpoFattura").ApplyLogOnInfo(Logon)

        frmAnteprima.FatturaPDF1.RecordSelectionFormula = "{TestaFattura.NrFattura} = " & NrFattura
        If Not System.IO.File.Exists(Path) Then
            frmAnteprima.FatturaPDF1.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Path)
            frmAnteprima.Dispose()
        End If
        frmMail.DestinationAddress.Text = Me.MailTextBox.Text
        frmMail.DestinationName.Text = "XXXXX" + Me.DenominazioneTextBox.Text
        frmMail.ListBox1.Items.Add(Path)
        frmMail.Attachments1.Items.Add(Path)
        frmMail.ListBox1.Items.Add("XXXXXXXXXXXXXXX")
        frmMail.Body.Text = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " + _
        CStr(NrFattura) + " del " + CStr(DataFattura) + " :" + ACapo + ACapo + _
        "- FATTURA - " + FileName + ACapo + ACapo + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX." + _
        ACapo + ACapo + _
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ACapo + ACapo
        If DataFattura <= #12/31/2007# Then
            frmMail.Body.Text = frmMail.Body.Text + _
                                "XXXXXXXXXXXXXXX"
                                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ACapo + _
                                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ACapo
        Else
            frmMail.Body.Text = frmMail.Body.Text + _
                                "XXXXXXXXXXXXXXX" + ACapo + _
                                "XXXXXXXXXXXXXXX"
                                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX." + ACapo + _
                                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ACapo
        End If
        frmMail.MdiParent = frmSapri
        frmMail.Show()

    End Sub

++++++++++++++++++fine generazione file in pdf+++++++++++++++++++

Grazie mille per il vostro tempo . PER QUANTO RIGUARDA LE XXXXX SONO SOLO TESTO DESCRITTIVO CHE CREDO NON CI INTERESSI AL FINE DELLA RIASOLUZIONE DEL PROBLEMA...

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 14:09
Martedì, 30/06/2009
io personalmente non ho ancora risolto... ma il mio è un acaso estremo e a parte.... tu puoi benissimo risolvere.... usando il sendasync e il socketeventsargs fai in modo che il messaggio successivo venga mandato solo quando è stato mandato il precedente.... sinceramente non ti consiglio di usare il sendasync perche questo si usa solo se devi mandare stringhe velocemente e puoi raccogliere stringhe in un buffer di invio e poi mandare tutto assieme... a te invece sono mail... ragion per cui ti consiglio di usare il beginsend che è facilissimo... oppure ancora... fai una classe che manda una singola mail in modo sincrono... e fai un timer che genera un thread con quella classe per ogni mail che devi mandare... ecco come mandare mail veloce senza usare metodi asincroni (facile no?)

PM Quote
Avatar
ivan.ruotolo (Normal User)
Newbie


Messaggi: 2
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 14:39
Martedì, 30/06/2009
Ciao Grazie mille per il tuo consiglio,, lo apprezzo molto.
Ma io non mastico molto bene il vb.net ed ho creato il codice seguente preso un po la e qua su internet.

Ho una tabella dove ho i miei indirizzi e li recupero tramite il la texbox ora però dovrei fare un ciclo credo io per recuperare questi indirzzi e farli partire. Ma non ci riesco proprio.. E come un blocco....
Puoi dargli uno sguardo tu ???? te ne sarei davvero grato...
PS rimango attaccato al pc per vedere la risposta..

Nella form ho un semplice tasto ed una casella che mi fa scorrere le email. ti allego il file immagine.

******************************

Imports System.Net.Mail 'importo il Namespace
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
Public Class Form2
    Dim mail As MailMessage 'questa dichiarazione deve essere globale
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim destinatario As MailAddress
        Try
            mail = New MailMessage()
            destinatario = New MailAddress(EmailTextBox.Text) '(DestinationAddress.Text)

            Dim mittente As New MailAddress("xxxxx.xxxxxxxxxxxxxxx", "descrizione")

            mail.From = mittente

            mail.To.Add(destinatario)

            mail.Body = "<html><head></head><body>CIAO</body></html>"

            mail.Attachments.Add(New Attachment("C:\ciao.txt"))

            Dim smtp As New SmtpClient("smtp.fastwebnet.it")

            smtp.Credentials = New System.Net.NetworkCredential("xxxxxxxxxxxxxxxx", "xxxxxxxxxxx")
            smtp.UseDefaultCredentials = False
            AddHandler smtp.SendCompleted, AddressOf invio_completato

            Dim Token As New Object
            smtp.SendAsync(mail, Token)
        Catch ex As SmtpException
            MsgBox("Nessuna connessione ad internet attiva", MsgBoxStyle.Exclamation, "Errore")
            mail.To.Clear()
            mail.Attachments.Clear()
            mail.Dispose()
        End Try
    End Sub

    Private Sub invio_completato(ByVal sender As Object, _
                    ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        Dim Token As Object = e.UserState

        If e.Cancelled Then
            Debug.WriteLine("Invio annullato")
        End If

        If e.Error IsNot Nothing Then
            Debug.WriteLine("Errore: " & e.Error.ToString)

        Else
            Debug.WriteLine("Invio completato")
        End If

        mail.To.Clear()
        mail.Attachments.Clear()
        mail.Dispose()
    End Sub

    Private Sub Tab_emailBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tab_emailBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.Tab_emailBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.DSEMail)

    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Tab_emailTableAdapter.Fill(Me.DSEMail.Tab_email)
    End Sub
End Class

************************************************


ivan.ruotolo ha allegato un file: email.JPG (112281 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 17:51
Martedì, 30/06/2009
nono nn serve tutta quella robaccia che hai usato.. allora... fa una classe cosi piu o meno...


public class manda
dim dest as string
dim mitt as string
dim mex as string
dim obj as string

public sub invia()
crei e invii il messaggio
end sub
end class

poi nella classe principale fai un timer e ci metti dentro

private timer1()
dim p as new manda
p.dest=hdsufhdsf
p.mex=ciao da me
etc etc
dim c as new thread(addressof p.invia)
c.start
end sub

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo