MailMessage

mercoledì 27 maggio 2009 - 15.21

teo256 Profilo | Newbie

Ciao a tutti,
sto utilizzando la funzione
MailMessage msgMail = new MailMessage();
con le relative options per l'invio automatico di messaggi di posta con allegato un documento.
C'è la possibilità di visualizzare ed eventualmente modificare il messaggio di posta prima che venga inviato? L'ideale sarebbe che l'applicazione apra un nuovo messaggio di posta outlook con già settati mittente, destinatario, oggetto, corpo e allegati.

Grazie.

Edit:

avrei trovato questo: http://msdn.microsoft.com/it-it/library/ms269113.aspx ma non riesco a capire come usarlo.

freeteo Profilo | Guru

>Ciao a tutti,
>sto utilizzando la funzione
>MailMessage msgMail = new MailMessage();
>con le relative options per l'invio automatico di messaggi di
>posta con allegato un documento.
questa classe è molto povera (putroppo) quindi per quanto ne so io, non riesci a fare ne l'importazione ne il salvataggio di un file ".eml"...avendo una necessità simile anche io in passato, ho comprato queste: http://www.aspnetemail.com sinceramente per 150$ sono stato molto soddisfatto.



>C'è la possibilità di visualizzare ed eventualmente modificare
>il messaggio di posta prima che venga inviato? L'ideale sarebbe
>che l'applicazione apra un nuovo messaggio di posta outlook con
>già settati mittente, destinatario, oggetto, corpo e allegati.
se vuoi che venga aperto l'outlook ti conviene usare un collegamento "mailto:"
http://www.ianr.unl.edu/internet/mailto.html

e quindi da codice ti basta comporre quella stringa e lanciareil processo (a mo' di "shellexecute") ossia:
using System.Dignostics; ... Process.Start("mailto:matteo@....?subject=ciao...");
il problema è che non sono mai riuscito a far caricare anche un allegato alla mail .



>avrei trovato questo: http://msdn.microsoft.com/it-it/library/ms269113.aspx
>ma non riesco a capire come usarlo.
questo usa le librerie di interoperabilità con Office, quindi di fatto devi avere Office installato...come vedi da qui:
http://msdn.microsoft.com/it-it/library/bb386094.aspx

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

teo256 Profilo | Newbie

Ciao Matteo,

viste le limitazioni di MailMessage (che comunque fa tutto tranne che permettere la modifica del messaggio prima dell'invio ed il relativo salvataggio nel client di posta), direi che l'alternativa "gratuita" è quella degli office tools.
Ovviamente Office è installato su tutti i client quindi questo requisito è soddisfatto.
Però non riesco a capire come è la procedura per poter utilizzare la classe MailItem in una applicazione windows form.

Ho aggiunto la dll al progetto....ma sembra non essere sufficiente. Putroppo non riesco a trovare nulla in merito sulla msdn.

Grazie.

Jeremy Profilo | Guru

Ciao Matteo.
La classe MailMessage è una classe nativa del .NET Framework che non fa altro che rappresentare, in formato oggetto, la struttura di un messaggio di posta elettronica.
Di fatto, non centra nulla con l'interoperabilità con Office(anche se Office ne prevede un riferimento),piuttosto, il suo utilizzo, è previsto per l'invio di messaggi tramite la classe SmtpClient.
In sostanza, se hai voglia/necessità di un client di posta ad hoc ... ben venga MailMessage .... altrimenti .... ciccia.

Ciao.

teo256 Profilo | Newbie

Ciao Jeremy,

MailMessage funziona quasi perfettamente per quello che devo fare. Fa tutto egregiamente a parte il fatto che il messaggio non può essere modificato dall'utente o comunque visionato prima dell'invio.
Quindi, quello di cui avrei bisogno è una funzione tipo quella di Invia a --> Destinatario posta, che apre un messaggio outlook, con già impostato oggetto e testo e, in più, anche il destinatario.

Jeremy Profilo | Guru

Ciao Matteo.
Quello che intendo dire è che MailMessage non fa assolutamente nulla ....non ha metodi ne funzioni(a parte quelle derivate dalla classe Object) ... quindi non fa perfettamente nulla.....è solo una rappresentazione ad oggetto della struttura di un messaggio di posta.
Quello che dovresti specificare .... sono le relative option a cui ti riferisci e sul quale si potrebbe ragionare per risolvere il problema, ma forse no ... non sto dicendo che si possa risolvere.
Quello che ti posso garantire .... è che l'uso della classe MailMessage è previsto (dal .NET Framework) con l'uso della classe SmtpClient per l'invio di messaggi di posta elettronica e, non so bene se è cio che rientra nelle tue esigenze, si potrebbe fare tutto usando le classi native del .NET Framework senza bisogno di interoperabilità con alcun che.
Dipende, ovviamente, se è quello che ti serve.

Ciao

teo256 Profilo | Newbie

Ciao Jeremy,

io attualmente uso questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

funziona bene, a parte per il fatto che non posso editare il messaggio prima dell'invio.
Dovendo editare il messaggio prima dell'invio, cosa posso utilizzare?

Grazie.

freeteo Profilo | Guru

>funziona bene, a parte per il fatto che non posso editare il
>messaggio prima dell'invio.
>Dovendo editare il messaggio prima dell'invio, cosa posso utilizzare?
ma tu vuoi farlo editare all'utente? perchè semplicemente non ti fai una maschera "simil-outlook" dove l'utente compila/modifica i campi e poi quando preme "invia", viene eseguito il codice con il Mailmessage che hai fatto prima...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

teo256 Profilo | Newbie

>ma tu vuoi farlo editare all'utente? perchè semplicemente non
>ti fai una maschera "simil-outlook" dove l'utente compila/modifica
>i campi e poi quando preme "invia", viene eseguito il codice
>con il Mailmessage che hai fatto prima...

C'avevo pensato anche io, ma oltre all'edit (scusate se non l'ho detto prima) preferirei che il messaggio venga controllato dall'utente (almeno in un primo periodo) e che venga salvato tra la posta inviata di Outlook.

freeteo Profilo | Guru

>C'avevo pensato anche io, ma oltre all'edit (scusate se non l'ho
>detto prima) preferirei che il messaggio venga controllato dall'utente
>(almeno in un primo periodo) e che venga salvato tra la posta
>inviata di Outlook.
ok allora se deve comparire in Outlook dell'utente, allora la cosa migliore è lavorare con l'oggetto Outlook e quindi usando la parte di .net che ti permette di farlo:
http://msdn.microsoft.com/it-it/library/d2tx7z6d.aspx
io non sono un esperto in merito, ma so che puoi lavorare bene con Office installato sul pc....attento però che le cose potrebbero cambiare tra le varie versioni di Office, e soprattutto funziona solo con Office e non altri pacchetti tipo OpenOffice, Thunderbird etc...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Jeremy Profilo | Guru

>C'avevo pensato anche io, ma oltre all'edit (scusate se non l'ho detto prima) preferirei che il messaggio venga controllato dall'utente
>(almeno in un primo periodo) e che venga salvato tra la posta inviata di Outlook.

Anche in questo caso è valido il consiglio di Matteo (freeteo) ..... se devi editarlo/controllarlo, puoi dare la possibilità di farlo in un Form....per quanto riguarda il salvataggio nella cartella PostaInviata sarebbe sufficiente che tu salvi, il messaggio, in un file con l'estensione .eml, preoccupandoti di mantenere la struttura definita nell' RFC 1341 per lo standard MIME(Nel caso in cui tu volessi aprirlo anche con altri client di posta).

Oppure, più semplicemente, puoi seguire il secondo consiglio di Matteo(freeteo).

Facci sapere...
Ciao

teo256 Profilo | Newbie

Non è che sapresti indicarmi qualche esempio di codice (completo) sull'utilizzo dell'oggetto Outlook?
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