Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

spedire mail da applicazione VB

255 views
Skip to first unread message

amoa...@gmail.com

unread,
Nov 8, 2013, 4:28:00 PM11/8/13
to
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

Luca D

unread,
Nov 8, 2013, 5:08:48 PM11/8/13
to
On Friday, November 8, 2013 10:28:00 PM UTC+1, amoa...@gmail.com wrote:
> 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
[cut]
>
> 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.


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

vittorio

unread,
Nov 8, 2013, 5:17:53 PM11/8/13
to

<< 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?


amoa...@gmail.com

unread,
Nov 10, 2013, 6:22:05 AM11/10/13
to
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

Paperino

unread,
Nov 10, 2013, 2:21:51 PM11/10/13
to
amoaonlus [ at ] gmail.com ha scritto:
Non dovrebbe essere questo il problema, ma vedi mai...
hai settato l'encoding ?
<http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.subjectencoding%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2>

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.

vittorio

unread,
Nov 10, 2013, 4:03:49 PM11/10/13
to
> 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)

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




Paperino

unread,
Nov 10, 2013, 4:36:43 PM11/10/13
to
vittorio ha scritto:
Vero.
Così imparo a non fare correzioni al volo al codice nei post :-(

Bye, G.FessoIoStavolta

Andrea [Work]

unread,
Nov 11, 2013, 3:01:28 AM11/11/13
to
Il Sun, 10 Nov 2013 03:22:05 -0800 (PST), amoa...@gmail.com ha scritto:

> 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))

Andrea [Work]

unread,
Nov 11, 2013, 3:04:37 AM11/11/13
to
Il Sun, 10 Nov 2013 03:22:05 -0800 (PST), amoa...@gmail.com ha scritto:

> 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))

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
0 new messages