Email con attachment in gestore predefinito (annosa questione!)

martedì 06 maggio 2008 - 11.22

zami Profilo | Junior Member

Ciao ragazzi,

il problema è annoso ma non ho trovato in giro una risposta soddisfacente.

STRUMENTI
VB.NET 2005, framework 2.0

RICHIESTA DEL CLIENTE:
poter aprire un messaggio nel gestore di posta elettronica predefinito, con allegati uno o più file

Finora ho usato Mailto: ma non supporta gli attachments.

PRIMA SOLUZIONE POSSIBILE
Anziché aprire il gestore, creo una piccola form di invio gestendo un System.Net.Mail.MailMessage.
Mi si pongono due problemi:

PROBLEMI
1) il cliente non ha accesso alla rubrica (come si può renderla disponibile accedendovi dalla form?)

2 ) a priori non so qual è il server SMTP (esiste un modo di leggerlo, P.E. dalle variabili d'ambiente?)


SECONDA SOLUZIONE POSSIBILE
Creo un oggetto di tipo System.Net.Mail.MailMessage, e poi lo invio al gestore predefinito

PROBLEMA
non ho la minima idea di come si fa! Mi sapete aiutare voi?




In alternativa accetto ogni altro suggerimento...

Grazie mille, ciao
Michela
"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

Stroke Profilo | Junior Member

>Ciao ragazzi,
>
>il problema è annoso ma non ho trovato in giro una risposta soddisfacente.
>
>STRUMENTI
>VB.NET 2005, framework 2.0
>
>RICHIESTA DEL CLIENTE:
>poter aprire un messaggio nel gestore di posta elettronica predefinito,
>con allegati uno o più file
Il messaggio probabilmente lo deve aprire il navigatore o il titolare del sito ( non è chiara questa cosa)?
I file da allegare si trovano sul server o sul client?

>
>Finora ho usato Mailto: ma non supporta gli attachments.

Mailto apre il gestore di posta predefinito e tutti hanno la possibilità di inserire allegati.
>
>PRIMA SOLUZIONE POSSIBILE
>Anziché aprire il gestore, creo una piccola form di invio gestendo
>un System.Net.Mail.MailMessage.
>Mi si pongono due problemi:
>
>PROBLEMI
>1) il cliente non ha accesso alla rubrica (come si può renderla
>disponibile accedendovi dalla form?)
è fattibile se il gestore è outlook in quanto esistono librerie per referenziarlo e quindi ricavarne la rubrica e presumibilmente lo si può fare con tutti i client di posta, ma sinceramente è un lavoro ciclopico e non credo che il gioco valga la candela, ma se devo essere sincero dalle tue dichiarazioni non riesco nemmeno a capirne l'uso. Normalmente si utilizza la posta dal sito per inviare un form e quindi il destinatario lo conosco al più mi manca il mittente che normalmente è quello che scrive il form oppure per ricevere qualcosa e allora il mittente è il titolare del sito e il destinatario non ha bisogno della rubrica per sapere il proprio indirizzo.
Altri utilizzi secondo me richiedono la memorizzazione su un database degli indirizzi e quindi poi li gestisci sul server.
O forse non ho capito che cosa ci vuoi fare.



>
>2 ) a priori non so qual è il server SMTP (esiste un modo di
>leggerlo, P.E. dalle variabili d'ambiente?)
System.Net.Mail.MailMessage spedisce dal server, normalmente si usa l'smtp del dominio di appartenenza normalmente fornito da tutti gli hoster.


>
>
>SECONDA SOLUZIONE POSSIBILE
>Creo un oggetto di tipo System.Net.Mail.MailMessage, e poi lo
>invio al gestore predefinito
>
>PROBLEMA
>non ho la minima idea di come si fa! Mi sapete aiutare voi?
>
>
>
>
>In alternativa accetto ogni altro suggerimento...
>
>Grazie mille, ciao
>Michela
>"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

Furio
http://www.opsi.ws

zami Profilo | Junior Member

Ciao Furio,

grazie per la risposta.


>>RICHIESTA DEL CLIENTE:
>>poter aprire un messaggio nel gestore di posta elettronica predefinito,
>>con allegati uno o più file
>Il messaggio probabilmente lo deve aprire il navigatore o il
>titolare del sito ( non è chiara questa cosa)?

Stiamo parlando di un'applicazione WinForms, non di una web app... scusami, non lo ho specificato, mea culpa!

La richiesta è: data una lista di file già gestita dall'applicazione, si desidera (alla pressione di un tasto) allegare i file presenti nella lista ad un messaggio di posta elettronica.
Il messaggio deve poi essere aperto per poter inserire il body, i destinatari etc.



>I file da allegare si trovano sul server o sul client?
>

Come dicevo, si tratta di una windows form, i file risiederanno sul PC dell'utente oppure in un percorso di rete comunque accessibile


>>
>>Finora ho usato Mailto: ma non supporta gli attachments.
>
>Mailto apre il gestore di posta predefinito e tutti hanno la
>possibilità di inserire allegati.


Mailto apre il gestore, ma è possibile passargli parametri per indicare i destinatari, il body etc. ma, almeno in contesto windows form, NON gli attachment...



>>PROBLEMI
>>1) il cliente non ha accesso alla rubrica (come si può renderla
>>disponibile accedendovi dalla form?)

>è fattibile se il gestore è outlook ... se devo essere sincero dalle tue dichiarazioni non riesco
>nemmeno a capirne l'uso.

Il problema è che se, come richiesto, aprissi il messaggio nel gestore predefinito, l'utente potrebbe continaure a comporlo con tutti gli strumenti a disposizione: se invece creassi una form come questa http://www.visual-basic.it/articoli/adsEmail_con_VB2005.htm vorrei almeno mettere a disposizione la rubrica... possibilmente, indipendentemente dal gestore


>>2 ) a priori non so qual è il server SMTP (esiste un modo di
>>leggerlo, P.E. dalle variabili d'ambiente?)

>System.Net.Mail.MailMessage spedisce dal server, normalmente
>si usa l'smtp del dominio di appartenenza normalmente fornito
>da tutti gli hoster.

Come ti dicevo, non si tratta di un'applicazione client- server ma di una winform... ancora scusami, per non averlo specificato.

Grazie per la tua disponibilità

ciao
Michela

"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

Brainkiller Profilo | Guru

>Come dicevo, si tratta di una windows form, i file risiederanno
>sul PC dell'utente oppure in un percorso di rete comunque accessibile
>Finora ho usato Mailto: ma non supporta gli attachments.
>Mailto apre il gestore di posta predefinito e tutti hanno la
>possibilità di inserire allegati.

Io proverei ad usare l'Object Model di Outlook per Office. Dovresti riuscire a fare tutte le cose che dici. Si tratta di instanziare Outlook e poi tramite le varie classi esposte dall'object model creare un nuovo messaggio e allegare i file.

>Il problema è che se, come richiesto, aprissi il messaggio nel
>gestore predefinito, l'utente potrebbe continaure a comporlo
>con tutti gli strumenti a disposizione: se invece creassi una

Così come ti ho consigliato dovrebbe funzionare.
Il tutto si fa con gli Office PIAs ecco cosa sono:
http://www.dotnethell.it/articles/officexppia.aspx

Qui un esempio dove ho usato il PIA di Excel:
http://www.dotnethell.it/articles/ExportExcelDataset.aspx

Analogo discorso può essere fatto con Outlook.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

zami Profilo | Junior Member

Ciao,

>Io proverei ad usare l'Object Model di Outlook per Office. Dovresti
>riuscire a fare tutte le cose che dici. Si tratta di instanziare
>Outlook e poi tramite le varie classi esposte dall'object model
>creare un nuovo messaggio e allegare i file.


Sì, in effetti è questa la strada che sto seguendo (e grazie per i link!).

Il problema è che se outlook non è presente sul PC (io ad esempio uso thunderbird) la funzionalità è inutilizzabile...
"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

Brainkiller Profilo | Guru

>Sì, in effetti è questa la strada che sto seguendo (e grazie
>per i link!).
>Il problema è che se outlook non è presente sul PC (io ad esempio
>uso thunderbird) la funzionalità è inutilizzabile...

Esatto E' proprio così.

Soluzioni di questo tipo da ciò che so io si fanno su reti aziendali piccole medie e grandi dove i client usano tutti lo stesso client di posta elettronica e non viene lasciata la scelta all'utente di usare Thunderbird piuttosto che un altro.

La penetrazione di client alternativi anche se migliori come Thunderbird è lenta proprio anche per questo motivo che non consentono integrazione con applicazioni esistenti o nuove.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

zami Profilo | Junior Member


>Esatto E' proprio così.
>[...]La penetrazione di client alternativi anche se migliori come
>Thunderbird è lenta proprio anche per questo motivo che non consentono
>integrazione con applicazioni esistenti o nuove.

Già... stavo cercando di fare il mio piccolo gesto rivoluzionario ma non ci sono riuscita...:):)

Grazie a tutti per l'aiuto, alla prossima :):)

Michela
"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5