Enviar Email Via Visual Basic (VB) com CDONT e Outras DLL

By | março 5, 2008

Criar um programa através da linguagem Visual Basic para enviar emails é fácil, mas esta linguagem ainda na versão 6 não tinha suporte para smpt como o Visual Basic 2005 ou .NET. Existem duas maneiras fáceis de contornar o problema:

1) Usar o servidor virtual de SMTP do IIS para enviar email através da biblioteca CDONT que pode tanto ser usada no Visual Basic como em ASP (linguagem de páginas Web). Infelizmente o arquivo cdonts.dll foi abolido pela Microsoft desde o XP mas você pode baixa-lo aqui – cdonts dll email. Após baixar o arquivo, coloque na pasta system32 do Windows e registre com o comando regsvr32 cdonts.dll. Veja mais instruções na página dos forums da Microsoft do CDONTS.

2) Usando o componente SMTP OstroSoft SMTP Component (ossmtp.dll). Esta dll é uma ótima alternativa, permite conexões com segurança e é bem mais flexível que o cdont. Veja as instruções na páginda do desenvolvedor.

Para enviar email via Visual Basic 2005, crie uma classe para enviar email, na primeira linha:

Imports Microsoft.VisualBasic
Imports System.net.Mail
Imports System.IO

Public Class SendEmail
Public arquivoWS As StreamWriter

Public Sub SendEmailMessage(ByVal strFrom As String, ByVal strTo _
As String, ByVal strSubject _
As String, ByVal strMessage _
As String, ByVal file As String, ByVal strHost As String,_
ByVal bSSL As Boolean, _
ByVal Porta As Integer, _
ByVal autenticacao As Boolean)

Dim theCredential As New System.Net.NetworkCredential("LOGIN", "SENHA")
try

Dim MailMsg As New MailMessage(New MailAddress(strFrom.Trim()), New MailAddress(strTo))

MailMsg.BodyEncoding = System.Text.Encoding.Default

MailMsg.Subject = strSubject.Trim()
MailMsg.Body = strMessage.Trim() & vbCrLf
MailMsg.Priority = MailPriority.High
MailMsg.IsBodyHtml = True

If Not file = "" Then
Dim MsgAttach As New Attachment(file)
MailMsg.Attachments.Add(MsgAttach)
End If

Dim SmtpMail As New SmtpClient

SmtpMail.Host = strHost
SmtpMail.Port = Porta

If bSSL = True Then SmtpMail.EnableSsl = True

SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network

If autenticacao = True Then
SmtpMail.UseDefaultCredentials = False
SmtpMail.Credentials = theCredential
End If

SmtpMail.Send(MailMsg)
Catch ex As Exception

End Try
End Sub

End Class