Newsgroup: it.comp.lang.visual-basic
Titolo: spedire mail da applicazione VB

ciao a tutti
ho una maschera in access 2010 che mi consente, cliccando un pulsante, di aprire il client predefinito di posta del pc con l'indirizzo email del destinatario già al suo posto, e anche l'oggetto. l'indirizzo email viene preso dal campo "email" della tabella "Clienti". Tutto funziona benissimo, e questo è il codice VBA:
 
Private Sub sendmail_Click()
Dim strInput As String
Dim Oggetto As String
On Error GoTo Error_email
Oggetto = "Auguri!"
strInput = "mailto:" + Me!email + "?subject=" + Oggetto
Application.FollowHyperlink strInput, , True
 
Exit Sub
Error_email:
MsgBox "Di questo nominativo non abbiamo un indirizzo email!", vbInformation
 
End Sub
 
Ora, questa maschera ha la funzione di aprirsi in corrispondenza del compleanno del cliente per potergli mandare gli auguri, c'è una macro per questo; ma la maschera, per aprirsi, apre naturalmente anche il database (che sta sul server locale) e quindi c'è un accesso ai dati che vorrei evitare. Allora ho pensato di creare un'applicazione usando visual basic 2013 express che prenda i dati dal db e faccia la stessa funzione della maschera senza aprire il db. E in effetti l'applicazione la sto creando e tutti le connessioni funzionano. Il problema che rimane è quello che riguarda il codice VBA sopra postato.  
 
Naturalmente non ho pensato che il VBA fosse possibile portarlo tale e quale in un'applicaziona VB. Ho cercato per giorni sul web soluzioni ma non ho trovato niente che faccia al mio caso. Per esempio ho trovato soluzioni per le quali bisognava inserire nel codice il server smtp, password del client e/o altri parametri che io non posso conoscere distribuendo l'applicazione. Tenete presente che quel blocco di codice di Access può essere eseguito in qualsiasi pc (che abbia access naturalmente) consentendogli di aprire il client predefinito e spedire mail usando i parametri del pc da cui viene eseguito, e come vedete, non contiene parametri
 
In poche parole, dovrei "tradurre" il codice VBA in VB. Per ora l'unico errore che mi da è che FollowHyperlink non è un membro di System.Windows.Form.Application.
 
grazie in anticipo per qualsiasi dritta
 
Luciano

 System.Windows.Form.Application.
 
 
Ti basta sostituire l'istruzione con un semplice Process.Start, passando la medesima riga di comando, e dovrebbe funzionare

 
<< l'indirizzo email viene preso dal campo "email" della tabella "Clienti". 
Tutto funziona benissimo, e questo è il codice VBA:
 
<strInput = "mailto:" + Me!email
 
ma come mai usi "Me" se  "email" è il campo di una tabella? 
 
 

ciao 
 
Luca hai ragione, in effetti funziona lo stesso senza Me! Comunque grazie, sono riuscito con Process.Start a fare quello che volevo. Outlook si apre con l'indirizzo email del destinatario già al suo posto. L'unica cosa che non riesco è al fargli collocare nell'oggetto del messaggio una frase predefinita, che invece con access riesco. Questo è il codice:
 
   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim posta As New MailMessage()
        If TextBox2.Text = "" Then
            MsgBox("Di questo nominativo non abbiamo un indirizzo email!", vbInformation)
        Else
            posta = New MailMessage
            posta.To.Add(TextBox2.Text) 'A
            posta.Subject = "Auguri!"
            posta.Priority = MailPriority.High
            Process.Start(String.Format("mailto:{0}", posta.To, posta.Subject, posta.Priority))
        End If
    End Sub
 
Ho passato ore con questo posta.Subject ma non c'è verso.
 
grazie


 
Comunque a me queste quattro righe di base funzionano:
 
Imports System.Net.Mail
Dim ClientDiPosta As New SmtpClient("IndirizzodellSMTP")
Dim message As New MailMessage("indirizzo@mittente", _
"indirizzo@ricevente", "Soggetto!", "Testo del test")
Client.Send(message)
 
Bye, G.

 Client.Send(message)
 
quest'ultima riga dovrebbe essere:
ClientDiPosta.Send(message)
 
 
 
 

vittorio ha scritto:

Vero.
Così imparo a non fare correzioni al volo al codice nei post :-(
 
Bye, G.FessoIoStavolta

             Process.Start(String.Format("mailto:{0}", posta.To, posta.Subject, posta.Priority))
 
Questo funziona:
| Process.Start(String.Format("mailto:{0}?&bcc=
a...@a.com
&subject={1}&body={2}", emailDest, subject, body))

             Process.Start(String.Format("mailto:{0}", posta.To, posta.Subject, posta.Priority))
 
Comunque questa sintassi non ha senso, se usi il process.start, devi
guardare i paramtri di mailto:, non c'entra nulla la classe MailMessage
http://stackoverflow.com/questions/5229973/vb-net-open-outlook-with-to-cc-subject-body-attachment