Newsgroup: it.comp.lang.visual-basic
Titolo: Spedire mail tramite MAPI

Ciao a tutti.
Dunque, ho realizzato un piccolo programma per spedire mail tramite MAPI.
L'unica cosa che non riesco a fare e' controllare se l'invio della mail e' 
andato a buon fine.
Per spedire la mail appena creata, uso il metodo Send dell'oggetto 
MapiMessages con la seguente sintassi:
MAPIMessage.Send True
Il problema e' che questa fn non ritorna nessun codice di errore o di 
successo e non genera nemmeno delle eccezioni, a parte nel caso in cui 
siano mancanti il destinatario e/o il subject della mail.
Come faccio a sapere se l'utente per esempio ha annullatto l'operazione di 
invio e, sopratutto, come faccio a sapere se l'utente ha spedito la mail ?
Insomma, dato che il metodo Send non ritorna nessun codice, ci sara' da 
qualche parte una variabile o un'eccezione da trappare per sapere cosa e' 
successo durante il send no?
Grazie

 Grazie
bho, io la vedo diversamente, per me il mapi e' un componente che mette in
coda le email da inviare tramite il client email ! Quindi il suo compito e'
finito nel momento in cui passa la mail alla queue di OExpress ad esempio,
quindi poi sei tu che devi metterti a cercare il client email predefinito ,
capire come interagirci e soprattutto cosa trappare!
Io ad esempio in un progettino (ereditato dal "Mailoe" del sito comune)
scrivo : "messaggio accodato, si consiglia di inviare il messaggio" !
Insomma , le mapi IMVHO finiscono il loro compito inviando la mail al client
predefinito ! Quello che succede dopo non e' compito del mapi saperlo !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 
Probabilmente la tua visione e' quella giusta anche se, a mio avviso, 
dimostra come VB sia un linguaggio veramente poco flessibile.
Cmq, ho fatto un bel po' di ricerche e non pare esista un modo per capire 
se Send e' andato a buon fine oppure no, nonostante il fatto che il 
metodo non accodi la mail ma la spedisca direttamente.
La mail viene accodata in posta in uscita solo se la connessione internet 
non e' attiva al momento.
In ogni caso, grazie della risposta.

 internet non e' attiva al momento.
guarda se hai questo bisogno, dovresti cercare l'invio email tramite
winsock, in questo modo sei slegato dal client mail , hai il pieno controllo
ecc... unica pecca e' che essendo un metodo grezzo e' piu' macchinoso da
gestire specie quando devi allegare un file !!! Vedi te !


 gestire specie quando devi allegare un file !!! Vedi te !
Beh grezzo non direi, semmai al contrario, è + raffinato, dato che nella 
programmazione ormai si sta perdendo il gusto del FARE DA SE perchè si 
trovano sempre componenti già pronti.
Allora è anche grezzo fare un programma con del codice assembly o 
comunque a basso livello? Stessa cosa è per il Winsock.
IMHO.
Comunque l'idea del Winsock è azzeccata.
Neanche con il Winsock però puoi sapere se l'invio è riuscito, ma almeno 
puoi sapere se il destinatario è stato accettato dal server o no, e 
altre cose simili.
Per sapere davvero se l'e-mail è stata inviata o no, dovresti poter 
scaricare la posta e vedere se c'è un messaggio di mail delivery...

 comunque a basso livello? Stessa cosa è per il Winsock.
eh eh , dovevo mette le virgolette ! ^_^ Per grezzo intendevo "Raw",
"Macchinoso" , non grezzo nel senso di Rozzo ! ^_^


Si l'idea del winsock l'avevo presa in considerazione ma, a questo punto 
avrei direttamente usato VC++ invece che VB.
Per questo prg ho usato VB perche' in teoria doveva facilitarmi le cose; 
del resto scrivere un client mail con winsock non e' che ci voglia proprio 
10 minuti no ?
Cmq quello che serve a me non e' tanto sapere se la mail e' fisicamente 
arrivata al destinatario, ma semplicemente sapere se l'utente ha premuto il 
tasto INVIA oppure se ha chiuso la finestra di composizione della mail 
senza inviarla :-)
Usando il metodo "Send true", compare la classica schermata di composizione 
di un nuovo messaggio di Outlook, con i campi subject,destinatario e 
attachment precompilati da me (dal mio prg)..da questo punto in poi perdo 
il controllo dell'applicazione xche' non posso sapere se l'utente ha 
cancellato l'invio della mail o se ha premuto INVIA, semplicemente xche' il 
metodo Send non ritorna nessun valore e non genera nessuna eccezione.
Usando il metodo "Send false", che in teoria non dovrebbe far comparire 
nessun tipo di schermata, succede che in realta' compare un dialogbox nel 
quale si avvisa l'utente che sta per essere spedita una mail usando 
l'accounto xxx e si chiede se si vuole procedere o meno con l'invio; siamo 
punto e a capo dato che anche in questo caso non c'e' modo di sapere se 
l'utente ha detto si oppure no.

 ha scritto nel messaggio
news:Xns93D9914914103gi...@213.140.2.16...
: Si l'idea del winsock l'avevo presa in considerazione ma, a questo punto
: avrei direttamente usato VC++ invece che VB.
: Per questo prg ho usato VB perche' in teoria doveva facilitarmi le cose;
: del resto scrivere un client mail con winsock non e' che ci voglia proprio
: 10 minuti no ?
In rete trovi sicuramente qualcosa di già pronto.
Se devi farlo a mano non sono 10 minuti di lavoro, ma neanche 10 ore! :-)
Il protocollo SMTP, con il quale dialoghi con il server, è semplicissimo,
saranno si e no una dozzina di paroline magiche.
: Cmq quello che serve a me non e' tanto sapere se la mail e' fisicamente
: arrivata al destinatario, ma semplicemente sapere se l'utente ha premuto
il
: tasto INVIA oppure se ha chiuso la finestra di composizione della mail
: senza inviarla :-)
Se usi winsock hai il controllo completo, invii ciò che vuoi tu quando lo
dici tu.
: Usando il metodo "Send true", compare la classica schermata di
composizione
: di un nuovo messaggio di Outlook, con i campi subject,destinatario e
: attachment precompilati da me (dal mio prg)..da questo punto in poi perdo
: il controllo dell'applicazione xche' non posso sapere se l'utente ha
: cancellato l'invio della mail o se ha premuto INVIA, semplicemente xche'
il
: metodo Send non ritorna nessun valore e non genera nessuna eccezione.
: Usando il metodo "Send false", che in teoria non dovrebbe far comparire
: nessun tipo di schermata, succede che in realta' compare un dialogbox nel
: quale si avvisa l'utente che sta per essere spedita una mail usando
: l'accounto xxx e si chiede se si vuole procedere o meno con l'invio; siamo
: punto e a capo dato che anche in questo caso non c'e' modo di sapere se
: l'utente ha detto si oppure no.
I controlli MAPI utilizzano una sessione di OE in background, "quasi" del
tutto trasparente all'utente, ma come hai visto le limitazioni sono molte.
Considera anche che gli account di OE potrebbero non essere configurati se
l'utente, nel proprio pc, utilizza un altro client per la posta.
Imho vale la pena di spendere qualche oretta ed utilizzare il winsock.
Ciao, Luca.

> Imho vale la pena di spendere qualche oretta ed utilizzare il winsock.
ma se proprio vuoi fare le cose in fretta senza usare winsock "a manina"
scaricati qualche controllo per l'uso di smtp, mi viene in mente
smpt.ocx se ti serve te lo posto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Beh questo prottrebbe essere interessante..se hai il link postamelo che gli 
do un'occhiata.
Permette di allegare file alla mail?
Grazie