Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    E-mail con allegato ma non va

    Ciao a tutti, ho un form dove si può inserire un'allegato da un fileupload e poi mi richiamo una funzione per inviare la mail. Ma mi da problemi quando carico l'allegato non me lo trova. Anche se quando faccio il debug mi funziona. Dove sbaglio?

    Ecco il codice:

    codice:
    Public Sub inviaEmail(ByVal ricevente As String, ByVal mittente As String, ByVal soggetto As String, ByVal tipo_testo As String, ByVal dati As String, ByVal allegato As String)
    
    ''Creo l'oggetto MailMessage
            Dim mail As New MailMessage()
            'set the addresses
    
            mail.From = New MailAddress(mittente)
    
            mail.To.Add(ricevente)
            'set the content
    
            mail.Subject = soggetto
            mail.Body = testo
            mail.IsBodyHtml = True
            'Aggiungo un allegato
    
            'add an attachment from the filesystem
            If allegato <> "noallegato" Then
                mail.Attachments.Add(New Attachment(allegato))
            End If
            Dim smtp As New SmtpClient("smtp.ilnegoziodelfranchising.com")
            smtp.Credentials = New System.Net.NetworkCredential("info@ilnegoziodelfranchising.com", "negozio7web")
    
            Try
                smtp.Send(mail)
            Finally
                mail.Dispose()
                smtp = Nothing
            End Try
        End Sub
    Ecco come la chiamo
    codice:
    Call inviaEmail("mail_ricevente", email.Text, "Richiesta info", "Richiesta_Info", dati, allegato1.PostedFile.FileName)
    Cosa non va?
    Grazie a tutti

  2. #2
    considerando che la funziona la chiami passando il parametro allegato1.PostedFile.FileName, allora la variabile allegato dentro la funzione, conterrà semplicemente un nome di un file.
    Ma lo hai salvato già sul server questo file? credo proprio di no!!!!

    allora devi usare queste righe di codice:

    codice:
    Dim fileSulServer as string = Path.Combine(Server.MapPath("/uploads"), "ilNomeDelFile.ext")
    allegato1.SaveAs(fileSulServer)
    Call inviaEmail("mail_ricevente", email.Text, "Richiesta info", "Richiesta_Info", dati, fileSulServer)
    //inoltre cancella il file sul server se non ti server per altre operazioni

    Altra soluzione:
    Puoi pensare di passare l'intero stream di allegato1 alla funzione, e creare quindi l'allegato dallo stream senza salvarlo prima sul server:

    codice:
    Call inviaEmail("mail_ricevente", email.Text, "Richiesta info", "Richiesta_Info", dati, allegato1.PostedFile.InputStream)
    codice:
    Public Sub inviaEmail(ByVal ricevente As String, ByVal mittente As String, ByVal soggetto As String, ByVal tipo_testo As String, ByVal dati As String, ByVal allegato As Stream)
    
        ...
        ...
    
            'add an attachment from the filesystem
            If allegato.Length > 0 Then
                mail.Attachments.Add(New Attachment(allegato, "nomedilefile"))
            End If
        ...
        ...
    End Sub

  3. #3
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Originariamente inviato da Gluck74
    considerando che la funziona la chiami passando il parametro allegato1.PostedFile.FileName, allora la variabile allegato dentro la funzione, conterrà semplicemente un nome di un file.
    Ma lo hai salvato già sul server questo file? credo proprio di no!!!!

    allora devi usare queste righe di codice:

    codice:
    Dim fileSulServer as string = Path.Combine(Server.MapPath("/uploads"), "ilNomeDelFile.ext")
    allegato1.SaveAs(fileSulServer)
    Call inviaEmail("mail_ricevente", email.Text, "Richiesta info", "Richiesta_Info", dati, fileSulServer)
    //inoltre cancella il file sul server se non ti server per altre operazioni

    Altra soluzione:
    Puoi pensare di passare l'intero stream di allegato1 alla funzione, e creare quindi l'allegato dallo stream senza salvarlo prima sul server:

    codice:
    Call inviaEmail("mail_ricevente", email.Text, "Richiesta info", "Richiesta_Info", dati, allegato1.PostedFile.InputStream)
    codice:
    Public Sub inviaEmail(ByVal ricevente As String, ByVal mittente As String, ByVal soggetto As String, ByVal tipo_testo As String, ByVal dati As String, ByVal allegato As Stream)
    
        ...
        ...
    
            'add an attachment from the filesystem
            If allegato.Length > 0 Then
                mail.Attachments.Add(New Attachment(allegato, "nomedilefile"))
            End If
        ...
        ...
    End Sub
    Mi dice Tipo 'Stream' non definito. che intende?

  4. #4
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Originariamente inviato da mexican
    Mi dice Tipo 'Stream' non definito. che intende?
    Questo l'ho risolto mi mancava System.IO

    ma è spuntato quest'altro:
    Impossibile convertire il valore di tipo 'System.IO.Stream' in 'String'.
    codice:
    'add an attachment from the filesystem
    Riga 274:        If allegato.Length > 0 Then
    Riga 275:            mail.Attachments.Add(New Attachment(allegato), "curriculum")
    Riga 276:        End If

  5. #5
    la parentesi, l'hai chiusa troppo presto.....

    codice:
    mail.Attachments.Add(New Attachment(allegato, "curriculum"))

  6. #6
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Originariamente inviato da Gluck74
    la parentesi, l'hai chiusa troppo presto.....

    codice:
    mail.Attachments.Add(New Attachment(allegato, "curriculum"))
    Tnx!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.