VB .NET - Usando o servidor do Gmail


Você sabia que pode usar o servidor do Gmail em suas aplicações .NET para enviar e receber emails ?

Você só precisa definir as seguintes informações:

Após isso você pode enviar e receber email em aplicações web ou Windows.

Aplicações ASP .NET

Em aplicações ASP .NET basta você definir a seguinte seção no arquivo de configuração web.config

<system.net>
   <mailSettings>
      <smtp from=seu_gmail_email@gmail.com>
         <network host="smtp.gmail.com"
                  password="sua_gmail_senha"
                  port="587"
            userName="seu_gmail_email@gmail.com"/>
      </smtp>
   </mailSettings>
</system.net>

Feito isto basta usar o namespace System.Net.Mail.SmtpClient em sua aplicação ASP .NET para enviar emails:

using System.Net.Mail;
...
SmtpClient mailClient = new SmtpClient();
mailClient.EnableSsl = true;
mailClient.Send(from, to, subject, body);

Aplicações Windows

Em aplicações Windows desktop você tem que definir as credenciais de rede

sing System.Net.Mail;
using System.Net;
...
SmtpClient mailClient = new SmtpClient( "smtp.gmail.com", "587");
mailClient.EnableSsl = true;
NetworkCredential cred = new NetworkCredential("seu_gmail_username","sua_gmail_password");
mailClient.Credentials = cred;
mailClient.Send("from_me@gmail.com", "to_you@gmail.com","assunto vai aqui", "corpo do email vai aqui");

Exemplo de aplicação VB .NET

Vamos abrir o Visual Basic 2010 Express Edition e criar um novo projeto do tipo Windows Forms Application com o nome VBNET_Gmail;

No formulário form1.vb vamos definir uma interface bem simples usando controles Labels, TextBox e Buttons conforme o leiaute abaixo:

Os namespaces usados no formulário são:

Imports System.Net.Mail
Imports System.Net.Mime

Vamos definir o código do formulário da seguinte forma:

1- Evento Click do botão Procurar

 Private Sub btnProcurar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcurar.Click
      Dim ofd1 As New OpenFileDialog()
      If ofd1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lstAnexos.Items.Add(ofd1.FileName)
        End If
    End Sub

Este código procurar por anexos usando o controle OpenFileDialog e anexando o nome do anexo no controle ListBox;

2- Evento Click do botão Imagem

 Private Sub btnImagem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImagem.Click
        Dim d1 As New OpenFileDialog()
        If d1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            path = d1.FileName
            txtImagemLogo.Text = d1.FileName
        End If
    End Sub

O código acima permite selecionar uma imagem para embutir no email usando um controle OpenFileDialog;

3- Evento Click do botão Enviar Email

 Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click
        Dim SmtpServer As New SmtpClient()
     
  SmtpServer.Credentials = New Net.NetworkCredential("xyz@gmail.com", "password")
        SmtpServer.Port = 587
        SmtpServer.Host = "smtp.gmail.com"
        SmtpServer.EnableSsl = True

        mail = New MailMessage()
      
         Dim addr() As String = txtDestino.Text.Split(",")
        Try
            mail.From = New MailAddress("xyz@gmail.com", "Macoratti.net", System.Text.Encoding.UTF8)
            Dim i As Byte
     
      For i = 0 To addr.Length - 1
                mail.To.Add(addr(i))
            Next

            mail.Subject = txtTitulo.Text
          
 'mail.Body = txtAssunto.Text
     
      If lstAnexos.Items.Count <> 0 Then
                For i = 0 To lstAnexos.Items.Count - 1

                    mail.Attachments.Add(New Attachment(lstAnexos.Items.Item(i)))
                Next
            End If

             if path <> Nothing then
               Dim logo As New LinkedResource(path)
               logo.ContentId = "Logo"
               Dim htmlview As String
        
      htmlview = "<html><body><table border=2><tr width=100%><td><img src=cid:Logo alt=nomeempresa />
</td><td>http://www.macoratti.net</td></tr></table><hr/></body></html>"

        
   Dim alternateView1 As AlternateView = AlternateView.CreateAlternateViewFromString(htmlview +
 txtAssunto.Text, Nothing, MediaTypeNames.Text.Html)

            alternateView1.LinkedResources.Add(logo)
            mail.AlternateViews.Add(alternateView1)

            endif

            mail.IsBodyHtml = True
            mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
            mail.ReplyTo = New MailAddress(txtDestino.Text)
            SmtpServer.Send(mail)
        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try
    End Sub

Este código utiliza as credenciais do Gmail e os recursos da classe System.Net.Mail para

 Private Sub btnVisualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVisualizar.Click

        Dim frm As New Form2

        frm.Documento = "<html><body>" + txtTitulo.Text + "<br/>" +
                        "</b><hr/> <br/>" +
                        txtAssunto.Text + "<br/>" +
                        "<div style=""width:100%""><hr/><table border=1 style=""width:100%"">" +
                        "<tr><td width=30%><img style=""width: 180px; height: 170px"" src=""" +
                        Me.path + """ alt=""" + txtOrigem.Text + """ />" +
                        "</td><td><font size=5>" + txtOrigem.Text +
                        "</font><br/><b><br/>" + "Macoratti.net </b><hr/> <br/>" +
                        "http://www.macoratti.net" + "</td></tr>" +
                        "</table><font color=""teal"">" + txtOrigem.Text + "</font>"

        frm.Text = "Visualização Email para : " + "Macoratti"
        frm.ShowDialog()
    End Sub

Executando o projeto vemos abaixo o formulário preenchido e pronto para enviar o email:

Para visualizar o email podemos clicar no botão - Visualizar - e ter uma idéia do conteúdo a ser enviado:

E com isso concluímos nossa aplicação para interagir com o Gmail.

Pegue o projeto completo aqui: VBNET_Gmail.zip

Rom 6:11 Assim também vós considerai-vos como mortos para o pecado, mas vivos para Deus, em Cristo Jesus.
Rom 6:12
Não reine, portanto, o pecado em vosso corpo mortal, para obedecerdes às suas concupiscências;

Rom 6:13
nem tampouco apresenteis os vossos membros ao pecado como instrumentos de iniqüidade; mas apresentai-vos a Deus, como redivivos dentre os mortos, e os vossos membros a Deus, como instrumentos de justiça.

Referências:


José Carlos Macoratti