23 messaggi dal 05 gennaio 2006
www.megacine.it
Questo codice che copio mi funziona in locale ma non sul server..

Protected Sub Invia_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles invia.Click
Try
Dim InviaA As String = "indirizzo@mioindirizzo.it"
Dim oggetto As String = "Lavora con noi"

Dim email As New MailMessage(txtNome.Text & " " & txtCognome.Text & "<" & txtFrom.Text & ">", InviaA, oggetto, txtBody.Text)
Dim allegato As New Net.Mail.Attachment(FileUpload1.PostedFile.FileName)
email.Attachments.Add(allegato)

Dim smtp As New SmtpClient
smtp.Host = "smtp.aruba.it"
smtp.Send(email)

esito.Text = "E-mail inviata con successo"
txtNome.Enabled = False
txtCognome.Enabled = False
txtFrom.Enabled = False
txtBody.Enabled = False
invia.Enabled = False

Catch exc As Exception
esito.Text = "Si è verificato il seguente errore nell'invio del messaggio:<br><br>" & exc.ToString
End Try
End Sub

Il mio obbiettivo, come avrete capito, è inviare un email con un allegato senza doverlo salvare sul server e poi prendere il file salvato e allegarlo.

Il codice qui sopra funziona solo in locale e non capisco il perchè...

Che dite?

Micky
26 messaggi dal 20 luglio 2005
Il motivo per cui in produzione non funziona è perche gli passi un path su cui lui si aspetta di trovare un file che non c'è (è sulla tua macchina) mentre c'è quando lo provi in locale.

Quello che chiedi non credo sia fattibile in quanto l'oggetto "MailAttachment" che è poi l'allegato della mail chiede un filename per essere instanziato e quindi vuole un file fisico che lui possa toccare con mano  e che quindi deve essere presente sul server di produzione.

Quello che ti suggerisco è di portarti temporanemente il file in locale (sul server) attacarlo alla mail spedirla e poi eliminare il file.

Qui sotto ti riporto una porzione di codice C# (in Vb è molto simile) per portarti il file in locale:

HttpPostedFile pf=fileU.PostedFile;

if(pf!=null)

{

int lenth=pf.ContentLength;

string type=pf.ContentType;

string fileName=pf.FileName;

byte[] myData = new byte[lenth];

pf.InputStream.Read(myData, 0, lenth);


string strPath="C:\\tmp";

System.IO.FileStream newFile = new System.IO.FileStream(strPath, System.IO.FileMode.Create);

// Write data to the file

newFile.Write(myData, 0, myData.Length);

// Close file

newFile.Close();

}
23 messaggi dal 05 gennaio 2006
www.megacine.it
Ho chiesto questa cosa perchè ho letto questa discussione:

http://www.dotnethell.it/forum/messages.aspx?ThreadID=6182

e mi ha incuriosito perchè in realtà non sapevo questa cosa:

""MailAttachment è stata resa obsoleta e ora si lavora con la AttachmentBase che supporta anche uno Stream come input.""

ma non penso che sia vero.. però se lo fosse vorebbe dire che si potrebbe in teoria fare un stream al volo per il caricamento del file in fase di "Attachments.Add" e la cosa sarebbe parecchio interessante...

ma come hai detto tu, visto che io già salvo il file sul server per poi allegarlo alla mail aggiungo un passaggio e poi lo cancello..

Ciao e grazie

Micky

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.