Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Inviare email con n allegati
Forum - C# / VB.NET - [C#] Inviare email con n allegati

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


Messaggi: 14
Iscritto: 07/11/2012

Segnala al moderatore
Postato alle 0:27
Mercoledì, 07/11/2012
Ciao a tutti, vi pongo il mio problema.
Sono riuscito ad inviare una mail con C# e sono riuscito anche ad allegarci un file. Mi chiedevo però se fosse possibile fare in modo che da GUI l'utente finale possa continuare a caricare allegati ora con il mio codice si riesce ad allegarne SOLO uno e inoltre  durante l'invio del messaggio il form si blocca e si rende inutilizzabile perchè? (Dovrei creare un thread apposito?)

Vi posto comunque il mio codice funzionante ma che permette un solo allegato.

email e nomi fittizzi ovviamente ;)

Codice sorgente - presumibilmente C++

  1. MailMessage msg = new MailMessage();
  2.  
  3. msg.From = new MailAddress("ciccisbrin@gmail.com", "Nome Mittente");
  4.  
  5. msg.To.Add(new MailAddress("cicciricci@gmail.com", "Nome Destinatario"));
  6.  
  7. msg.Subject = "Oggetto";
  8.  
  9. msg.Body = "Testo";
  10.  
  11. msg.Attachments.Add(new Attachment(@"C:\immagine.jpg"));
  12.  
  13. SmtpClient client = new SmtpClient("smtp.servergenerico.com");
  14.  
  15. client.EnableSsl = true;
  16. client.Credentials = new NetworkCredential("nomeutente", "password");
  17. client.Send(msg);



Come si evince da codice msg.Attachments.Add(new Attachment(@"C:\immagine.jpg")); mi permette di allegare SOLO questa immagine, ma io non so l'utente finale quanti allegati dovrà allegare... Spero di essere stato chiaro.


PS: il codice l'ho tirato giù veloce ma non rispecchia quello che uso io perchè ovviamente usando un windowsform i campi li prendo  dai vari textbox.

Ultima modifica effettuata da Grad il 07/11/2012 alle 0:28


No pain no gain!
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:51
Mercoledì, 07/11/2012
Testo quotato

Postato originariamente da Grad:
(Dovrei creare un thread apposito?)





Testo quotato

che permette un solo allegato.



Fai altre Add ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Grad (Normal User)
Newbie


Messaggi: 14
Iscritto: 07/11/2012

Segnala al moderatore
Postato alle 12:04
Mercoledì, 07/11/2012
Ti ringrazio tantissimo però sono un po duro di testa e non ho capito una cosa:
fare altre add lo immaginavo, ma a me servono "n" add, io non so se l'utente finale manderà 10, 0, 5 , insomma N allegati... io cosa dovrei fare mille add vuote ?

Grazie in anticipo


No pain no gain!
PM Quote
Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 13:03
Mercoledì, 07/11/2012
devi far aggiungere il percorso degli allegati non direttamente nel metodo Add della classe MailMessage ma ad esempio in una listbox cosicchè se ne possano aggiungere a piacere

il codice che hai postato lo richiami solo quando devi inviare la mail ad esempio cliccando su un pulsante

i percorsi degli allegati li aggiungi al metodo Add all'interno di un ciclo prendendoli dalla listbox utilizzata precenentemente per tenerli in memoria




Ultima modifica effettuata da ampeg il 07/11/2012 alle 13:05
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:23
Mercoledì, 07/11/2012
In pratica, gli allegati come li sceglie l'utente?



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Grad (Normal User)
Newbie


Messaggi: 14
Iscritto: 07/11/2012

Segnala al moderatore
Postato alle 13:38
Mercoledì, 07/11/2012
Testo quotato

Postato originariamente da ampeg:

devi far aggiungere il percorso degli allegati non direttamente nel metodo Add della classe MailMessage ma ad esempio in una listbox cosicchè se ne possano aggiungere a piacere

il codice che hai postato lo richiami solo quando devi inviare la mail ad esempio cliccando su un pulsante

i percorsi degli allegati li aggiungi al metodo Add all'interno di un ciclo prendendoli dalla listbox utilizzata precenentemente per tenerli in memoria






La soluzione mi piace un sacco.. potresti farmi un piccolo esempio con il codice?



Testo quotato

Postato originariamente da nessuno:

In pratica, gli allegati come li sceglie l'utente?




sto ancora progettando la cosa ma io pensavo tipo di aprire con il menù un file chooser e da li potesse scegliere n allegati però non saprei come implementarlo... spero di essermi espresso abbastanza bene.


No pain no gain!
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:14
Mercoledì, 07/11/2012
Testo quotato

Postato originariamente da Grad:
sto ancora progettando la cosa ma io pensavo tipo di aprire con il menù un file chooser e da li potesse scegliere n allegati però non saprei come implementarlo... spero di essermi espresso abbastanza bene.



Quindi il tuo problema non è di codice ma di come devi implementare la cosa.

Semplicemente fai scegliere all'utente il file (con un bottone e una dialog box) e fai un Add inserendo il file in una listbox. Non mi pare complesso.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Grad (Normal User)
Newbie


Messaggi: 14
Iscritto: 07/11/2012

Segnala al moderatore
Postato alle 15:27
Mercoledì, 07/11/2012
Ti ringrazio per la pazienza infinita!

Allora il mio problema però è ANCHE a livello codice...  Da quello che ho capito la soluzione consiste nel far scegliere il file da un filechooser (o file browser o come si chiama), e inserirlo in una listbox. Ma così facendo l'utente non invia un singolo allegato? e come collego il file inserito in una listbox ad una Attachments.Add ?


No pain no gain!
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 16:58
Mercoledì, 07/11/2012
Ciao.
Secondo me i passaggi che devi fare sono questi:
1) con un filechooser, che presumo corrisponda dalla OpenfileDialog di Vb.net, fai scegliere all'utente i files da allegare. Se imposti la proprietà multiselect (o simile) su true, puoi selezionare più file alla volta, se sono nella stessa cartella.
2) quando la dialog si chiude, tra le proprietà dovresti trovare un'array con il path dei file selezionati. Devi aggiungere tali path, in formato di stringa, alla tua listbox per mostrare all'utente che file selezionati
3) se ne deve aggiungere altro, riapre la dialog e seleziona altri file. (punto 1)
4) componi il messaggio di posta. Per inserire gli allegati, scorri tutti gli item della listbox e per ogni item, lo aggiungi (vai ad aggiungere il path) all'oggetto allegati della tua mail.
Questo è lo scheletro di quello che dovresti fare.. se non riesci in questo, ti mancano le basi e devi studiarti le guide base della programmazione.
A partire da qui:
http://www.pierotofy.it/pages/guide/Guida_al_Visual_Basic_ ...
Ciao:k:

Ultima modifica effettuata da Renny il 07/11/2012 alle 16:59


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo