PROGRAMA TRAVA AO ENVIAR EMAIL

PHOENIX209E 18/10/2011 16:58:21
#386975
Pessoal boa tarde,sou novo no forum rs.
Estou com um pequeno probleminha,meu sistema de envio de email funciona corretamente,MAS percebo que ele trava durante a operação.
Segue o codigo de envio da lista de emails:

[th][/th][/tr Dim env As New C_ENVIA_EMAIL
Dim vFal, vSuc As Integer
Dim vErro, vImg As String
[ô]SB.Maximum = LST_ENVIAR_PARA.Items.Count / 2
If (TXT_IMG.Text = Nothing) Then
vImg = [Ô]C:\WINDOWS\prc.jpg[Ô]
Else
vImg = TXT_IMG.Text
End If
If (TXT_ASSUNTO.Text = Nothing Or ri.Text = Nothing) Then
MsgBox([Ô]O campo do Assunto e da Mensagem nao podem ser nulos.[Ô], MsgBoxStyle.Critical, [Ô]Campos vazios[Ô])
Else
Try
TXT_MSG.Text = HTML(ri.Rtf)

For i As Integer = 0 To LST_ENVIAR_PARA.Items.Count - 1
If (env.fnEnvia_email(prEmail, TXT_ASSUNTO.Text, TXT_MSG.Text, prSenha, prPorta, prSmtp, prSsl, LST_ENVIAR_PARA.Items(i), vErro, vImg)) Then
LST_ENVIADOS.Items.Add(LST_ENVIAR_PARA.Items(i) & [Ô] √[Ô])
vSuc += 1
Else
LST_ERRO.Items.Add(LST_ENVIAR_PARA.Items(i) & [Ô] X Erro: [Ô] & vErro)
vFal += 1
End If
Application.DoEvents()
Next
MsgBox([Ô]Tarefa concluida com [Ô] & vFal & [Ô] falha(s) e [Ô] & vSuc & [Ô] sucessos de [Ô] & LST_ENVIAR_PARA.Items.Count & [Ô] tentativas.[Ô], MsgBoxStyle.Information, [Ô]Tarefa concluida[Ô])
Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & Err.Description, MsgBoxStyle.Critical, [Ô]Erro[Ô])
End Try
End If
]
Cabecalho


Existe um FOR para separar sucessos de falhas e ir mudando os endereços conforme corre o laço.
Ja fui passo a passo e o FOR nao é o problema,vi que na hora que chega na linha pra enviar o email ele trava,segue a classe de envio:

[th][/th] Public Function fnEnvia_email(ByVal pEmailRemete As String, ByVal pAssunto As String, ByVal pMsg As String, ByVal pSenha As String _
, ByVal pPorta As String, ByVal pSmtp As String, ByVal pSsl As String _
, ByVal pDestino As String, ByRef pErro As String, ByVal pImg As String) As Boolean
Try
Dim mail As New Mail.MailMessage
mail.From = New MailAddress(pEmailRemete)
mail.To.Add(pDestino)
mail.Subject = pAssunto
Dim vw As AlternateView
vw = AlternateView.CreateAlternateViewFromString(pMsg & [Ô] <br><br><center><img src=[Ô][Ô]cid:imagem[Ô][Ô]></center><br><hr><br>[Ô] & FRM_PRINCIPAL.TXT_ASS.Text, Nothing, [Ô]text/html[Ô])
Dim logo As New LinkedResource(pImg)
logo.ContentId = [Ô]imagem[Ô]
vw.LinkedResources.Add(logo)
mail.AlternateViews.Add(vw)
Dim smtp As New SmtpClient(pSmtp)
smtp.EnableSsl = True
smtp.Port = pPorta
smtp.Credentials = New NetworkCredential(pEmailRemete, pSenha)
smtp.Send(mail)
fnEnvia_email = True
Catch ex As Exception
fnEnvia_email = False
pErro = Err.Description
End Try
Return fnEnvia_email
End Function
Cabecalho


O problema está justamente aonde eu [ô]negritei[ô] se alguem puder me ajudar ficarei grato!
LROSSI 18/10/2011 19:47:11
#387000
amigo, pelo que vi, não está funcionado a autenticação do servidor para que ocorra o envio do email...
se possivel, posta a mensagem de erro que fica mais facil de ajudar...

abaixo posto um código que uso em meus sistemas.


no topo do seu arquivo de codigo coloca isso:
Imports System.Net.Mail
-

utilize este código:

Dim oEmail As New MailMessage()
Try
With oEmail
.To.Add([Ô]para@email.com.br[Ô])
.From = New MailAddress(txtEMail.Text)
.Subject = [Ô]Email Enviado Pelo Site[Ô]
.Body = [Ô]texto aqui[Ô]
.IsBodyHtml = True
End With

Dim oSmtp As New SmtpClient
oSmtp.Host = [Ô]smtp.email.com.br[Ô]
oSmtp.Port = [Ô]123[Ô]
oSmtp.Credentials = New NetworkCredential([Ô]seu@email.com.br[Ô], [Ô]suasenhaaqui[Ô])

oSmtp.Send(oEmail)
lblAviso.Text = [Ô]Email enviado com sucesso. [Ô]
Catch ex As Exception
lblAviso.Text = [Ô]Ocorreu um erro ao enviar o email : [Ô] & ex.Message
Finally
oEmail.Dispose()
End Try
End Sub
PHOENIX209E 18/10/2011 20:22:06
#387009
Boa noite amigo,
Então envia o email ele envia,corretamente,MAS acontece um travamento enquanto o envio esta sendo concluido,ou seja,o usuario nao consegue interagir com o sistema,Entende?
Eu preciso usar uma trhead,mas nao entendo muito bem como usar em linhas de codigo este recurso,preciso deixar o envio do email em segundo plano,pra que haja menos percepção do usuario na operação.

LROSSI 18/10/2011 20:32:22
#387010
mas, a mensagem de erro é qual?
PHOENIX209E 18/10/2011 20:35:45
#387011
Não exibe nenhuma mensagem de erro.
Quando o usuario click em [Ô]Enviar Mensagem[Ô] o programa trava,logo ele vem com a mensagem de finalização falha ou sucesso,até o momento nao exibiu mensagem de erro,eu checo a caixa de entrada do meu email e lá esta a mensagem perfeitamente,inclusive com as formataçoes corretas.

O principal problema é a performance do programa,entende?
LROSSI 18/10/2011 20:48:17
#387013
coloca um bloco de tratamento de erro no seu código e ve a msg q aparece


try

catch ex as Exception
msgbox(ex.message)
end try
PHOENIX209E 18/10/2011 21:04:41
#387015
Não tem erro!!!!
Tem tratamento de erro,inclusive criei os criterios para isso,com passagens de parametros e tudo mais.o email é enviado.
mas há um travamento no envio!

Eu quero obter mais performance.

o envio funciona corretamente!
LROSSI 18/10/2011 21:12:08
#387017
ok, então teste outros códigos ou revise o seu proprio e o melhore de acordo com suas necessidades.
PHOENIX209E 18/10/2011 21:17:11
#387018
Obrigado pela sua iniciativa.
Um abraço!!!
Irei refazer e verificar aonde precisa melhorar.

Pessoal que precisa enviar email pelo vb,use o codigo deste topico,funciona corretamente.

;)

Abraços.

Topico encerrado.
Tópico encerrado , respostas não são mais permitidas