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