ENVIO DE EMAIL PROBLEMA COM SERVIDORES

LUIS.HERRERA 13/06/2012 13:37:40
#404067
Boa tarde amigos. Seu que há vários tópicos e códigos sobre envio de email, com VB6. Já testei vários e muitos dão problemas.

Hoje uso o VBSendMail.dll para o envio dos emails de modo automático no meu sistema, seja para notificar um usuário sobre uma ocorrência de sua área, ou o nosso suporte sobre um erro no software. Bem para isso tenho de usar contas minhas para enviar a mensagem pelo meu software, assim criei 3 contas de email, uma no Gmail, uma no Yahoo e outro do meu domínio. Assim tendo pelos 3 em sequência, dando erro passo ao próximo de modo que se um servidor estiver fora do ar, uso outro. Ok funciona perfeitamente.

O problema é que alguns clientes relatam que as vezes não recebem as mensagens, então suponho que pode ter ocorrido dos 3 servidores estarem inoperantes simultanemanete ou ter ocorrido algum problema na internet do cliente, neste caso meu softawre descarta a mensagem.

Algumas características dos clientes:
- alguns tem micros conectados a web e outros não
- as versões do windows são bem diferentes: XP, Vista, Seven, NT, Server 2003 e 2008.

Com o cenário acima pensei em criar uma tela de configurações, onde o TI configurasse uma conta própria de email no software para ser usada no envio, e se desse erro a mensagem voltaria para essa conta da própria empresa cliente e não para minhas contas, o que gera trabalho para reenviá-las depois.

PROBLEMA:
Ao criar essa tela como: email de envio - servidor SMTP - Porta usada - Usuário - Senha me deparei com dois problemas:

Configurar se o servidor exige Autenticação e Se usa Conexão Segura (SSL e TLS ou nenhuma). Bem aí começou o problema.

O VBSendMail só permite incluir Autenticação, não possui suporte a SSL e TLS. Assim não posso usá-lo. Pesquisei e encontrei uma classe em VB6 criada pelo italizano GioRock. Funcionou perfeitamente, mas só serve para SSL 3.0 e com o servidor Hotmail, nenhum outro servidor funciona. Então também não serve.


Perguntas:
1- alguém sabe de algum código do VB6 que seja viável para envio de emails com a configurações de todos esses dados do cliente.

2- Se isso não existir para VB6, existe alguma rotina pronta em Dot.Net que possa suprir essa necessidade, e ser usada pelo VB6?

Nota: Os servidores Gmail, Yahoo e meu domínio estão funcionando perfeitamente. Já testando com a Globo.com não funcionou, pois usa SSL e autenticação. O hotmail só com o código do GioRock, mas o hotmail não seria usado pelos meus clientes, e acredito que seriam seus próprios domínios.

Já o CDONS só funciona em XP e não no Seven. Tem uns códigos que usam um serviço no site da Microsoft, mas isso não é muito viável, pois se mudarem o link ou tirarem o serviço, meu sistema deixaria de funcionar. Por isso não uso e não sei se resolveria também.

Agradeço a ajuda.
Luis

ALEVALE 14/06/2012 12:22:51
#404140
Algumas características dos clientes:

- O correto com certeza é a TI de cada empresa configurar o e-mail, porta, servidor etc, pois essa é a ideia de um software que faz esse tipo de envio neh, cada um configura de acordo com a sua necessidade.

PROBLEMA:
- Trabalhei em uma empresa que utiliza os schemas da microsoft para envio de e-mails e isso roda até hoje mais de 5 anos e nunca tivemos problemas com isso
- Com certeza o vbsenmail.dll é uma excelente DLL para essa função, sempre utilizei ele tbm e nunca tive problemas
- Nunca vi alguma classe do vb.net com esse fim que funcionasse no VB6.

SUGESTÃO:- Começe a configurar o seu software com o que você tem hoje, SSL 3.0, Exchange,POP etc dai você vai realizando as alterações conforme irão surgindo, o link abaixo é uma classe para que suporte SSL não testei

http://codingsense.wordpress.com/2009/07/17/sending-email-through-gmail-using-vb-6-0/
http://www.emailarchitect.net/easendmail/ex/b/4.aspx - PAGO
LUIS.HERRERA 14/06/2012 19:11:13
#404195
ALEVALE testei esse código do primeiro link, e funcionou perfeitamente no XP Pro e no Windows Seven Pro sem instalar nada nesse último (usei o ADO 2.6 que é o do meu sistema) e no Seven funcionou perfeitamente, sem instalar, acho que já dá suporte.

Vou usar isso e fazer mais testes, com outras configurações.

Obrigado.


Só para conhecimento, encontrei um código para VB.Net, mas não consegui fazer funcionar de modo algum no meu VS 2008 com framework 3.5 no Windows Seven. Trava e não faz nada. Não sei se funcionaria com VB6, após gerar uma biblioteca DLL dele, mas pareceu interessante, principalmente quando for incrementar isso na nova versão Dot.Net do meu sistema, porém tenho que descobrir o porque está travando, se vários sites disseram que funciona. Inclusive há várias outras configurações bem completas para ele.

O código é:

Imports System.Net.Mail

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim smtpServer As New SmtpClient()
Dim mail As New MailMessage()

[ô]using gmail
smtpServer.Port = 465
smtpServer.Host = [Ô]smtp.gmail.com[Ô] [ô] usado pela Globo.com
[ô]Enable SSL does not work in tandem with SmtpDeliveryMethod.PickupDirectoryFromIis
smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network
smtpServer.EnableSsl = True
smtpServer.UseDefaultCredentials = False
smtpServer.Credentials = New Net.NetworkCredential([Ô]meuemail@globo.com[Ô], [Ô]minha senha[Ô])

mail = New MailMessage()
mail.From = New MailAddress([Ô]meuemail@globo.com[Ô], [Ô]Conta Globo[Ô])
mail.To.Add(New MailAddress(TextBox1.Text, [Ô]Nome Destinatário[Ô]))
mail.Subject = [Ô]Teste de envio VB 2008 com SSL[Ô]
mail.Body = [Ô]Texto: [Ô] & TextBox2.Text

[ô]mail.CC.Add(New MailAddress([Ô]cc@ccdomain.com[Ô], [Ô]CC Name[Ô]))
[ô]mail.Bcc.Add(New MailAddress([Ô]bcc@bccdomain.com[Ô], [Ô]BCC Name[Ô]))

Try
smtpServer.Send(mail) [txt-color=#e80000][ô]trava aqui, não dá erro só trava.[/txt-color]
MsgBox([Ô]Enviado Com Sucesso Aguarde A Resposta.[Ô], MsgBoxStyle.Information, [Ô]Enviado[Ô])
Catch ex As SmtpException
MessageBox.Show(ex.Message)
End Try

End Sub
End Class


Outra coisa, encontrei um projeto de envio de emails todo feito em C com um open source de SSL no link tem o site do autor. Mas como não tenho C ou C++ v.6 só o VB6, e também não conheço nada dessas linguagens, não pude testar. Mas se alguém quiser o link é:

http://www.codeproject.com/Articles/98355/SMTP-Client-with-SSL-TLS
Tópico encerrado , respostas não são mais permitidas