Array
(
)

Autenticação para envio de e-mail

Emir Neto
   - 05 mar 2009

Estou tentando enviar e-mail utilizando o namespace ( Imports System.Net.Mail ), mas, como é através de um e-mail yahoo, o mesmo retorna uma excessão informando que o servidor requer autenticação. Como devo proceder para autenticar vaia código.
Grato.

Guilhermehao
   - 05 mar 2009

Ai vai um exemplo prático..acredito q no seu caso deva ser por causa do Ip do servidor..e também o mesmo está com o serviço de SMTP.

#Código

imports system.net.mail

´cria um objeto do tipo mail message que contém as informações do e-mail
dim email as new mailmessage
´remetente 
email.from = new mailaddress(txtde.text)
´destinatario 
email.to.add(txtpara.text)
´destinatario de copia do email
email.to.add(txtcc.text)
´destinatario de copia oculta
email.bcc.add(txtcco.text)
´prioridade de envio
email.priority = mailpriority.high
´formato do email
email.isbodyhtml = true
´assunto do email
email.subject = txtassunto.text
´mensagem do email
email.body = txtmensagem.text

´cria o objeto smtp
dim smtp as new smtpclient
smtp.host = "informe aqui o endereco ip do servidor"
smtp.port = 25
try
   ´envia o email
   smtp.send(email)
   ´envia um alerta ao usuario que o e-mail foi enviado com sucesso
   dim script as string = "<script>alert(´email enviado com sucesso!´);
</script>"
   clientscript.registerclientscriptblock(me.gettype, "clientscript", script)
catch ex as exception
   ´envia um alerta ao usuario que o e-mail foi enviado com sucesso
   dim script as string = "<script>alert(´houve um erro ao enviar o e-mail!´);</script>"
   clientscript.registerclientscriptblock(me.gettype, "clientscript", script)
  finally
end try



E também a configuração

#Código
<configuration>
   <system.net>
    <mailsettings>
      <smtp>
        <network host="servidor" port="25" username="usuario" password="senha" />
      </smtp>
    </mailsettings>
  </system.net>


Emir Neto
   - 05 mar 2009

Desculpe, estou utilizando winforms

Veja bem, este é meu código:

Imports System.Net.Mail
Public Class frmEmail
´usado para armazenar os anexos
Dim Attachment As System.Net.Mail.Attachment
´cria uma mensagem a enviar
Dim Mailmsg As New System.Net.Mail.MailMessage()

Private Sub btnIncluiAnexo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluiAnexo.Click
´Mostra caixa de dialogo para selecionar anexos
Dim Conta As Integer

ofdAnexo.CheckFileExists = True
ofdAnexo.Title = ´Selecione um arquivo para anexar´
ofdAnexo.ShowDialog()

For Conta = 0 To UBound(ofdAnexo.FileNames)
lstAnexos.Items.Add(ofdAnexo.FileNames(Conta))
Next
End Sub

Private Sub btnExcluiAnexo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluiAnexo.Click
´Remove os anexos
If lstAnexos.SelectedIndex > -1 Then
lstAnexos.Items.RemoveAt(lstAnexos.SelectedIndex)
End If
End Sub

Private Sub btnEnviaMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviaMail.Click
Dim i As Integer = 0

´validação dos dados
If txtSMTP.Text = ´´ Then
MsgBox(´Informe o nome do servidor SMTP ...!!!´, MsgBoxStyle.Information, ´Envia Email´)
Exit Sub
End If

If txtDe.Text = ´´ Then
MsgBox(´Informe o endereço de Origem ...!!!´, MsgBoxStyle.Information, ´Envia Email´)
Exit Sub
End If

If txtPara.Text = ´´ Then
MsgBox(´Informe o endereço de destino ...!!!´, MsgBoxStyle.Information, ´Envia Email´)
Exit Sub
End If

If txtAssunto.Text = ´´ Then
MsgBox(´Informe o assunto do email ...!!!´, MsgBoxStyle.Information, ´Envia Email´)
Exit Sub
End If
´ Define a prioridade da mensagem como normal
Select Case cmbPrioridade.Items.Count
Case 1
Mailmsg.Priority = MailPriority.Low
Case 3
Mailmsg.Priority = MailPriority.High
Case Else
Mailmsg.Priority = MailPriority.Normal
End Select

´endereca o enviador
Mailmsg.From = New MailAddress(txtDe.Text)

´endereca o recipiente
Mailmsg.To.Add(New MailAddress(txtPara.Text))

Dim mSmtpCliente As New SmtpClient(txtSMTP.Text)

´Especifica o formato
If chkEnvHTML.Checked = True Then
Mailmsg.IsBodyHtml = True
End If

´define o assunto
Mailmsg.Subject = txtAssunto.Text

´Anexa os arquivos um por um
For i = 0 To lstAnexos.Items.Count - 1
Mailmsg.Attachments.Add(New Attachment(lstAnexos.Items(i)))
Next

´Corpo do EMail
Mailmsg.Body = txtMensagem.Text

´ENvia o email
mSmtpCliente.Send(Mailmsg)
End Sub

End Class