SMTP E WINSOCK
Após procurar a melhor forma de enviar email sem utilizar aplicativos como o outlook e afins, encontrei a solução com winsock acessando um servidor SMTP.
simples e eficiente.
só q como nem tudo é perfeito, após enviar a mensagem pro servidor, veio como resposta a seguinte descrição...
"queued mail for delivery" (que significa que a mensagem está no servidor mas que não foi "repassada a seu destinatário".
a pergunta é...como proceder para que o servidorSMTP repasse a mensagem ao destinatário?
segue abaixo a codificação...
Private Sub Command1_Click()
Dim SCK As New Socket.TCP
Err.Clear
On Error GoTo there
' Servidor e porta
SCK.Host = Text1(0) & ":25"
SCK.TimeOut = 2000
SCK.DoTelnetEmulation = True
' Abre a conexão
SCK.Open
' Vê se conseguiu conectar
If SCK.Connected = True Then
Shape1.BackColor = vbRed
Else
MsgBox "Não Foi PossÃvel Estabelecer a Conexão", vbCritical
Exit Sub
End If
DoEvents
' Começa a emulação do protocolo SMTP
List1.AddItem SCK.GetLine
' Manda o helo
SCK.SendLine "HELO"
DoEvents
List1.AddItem SCK.GetLine
' Remetente
SCK.SendLine "MAIL FROM:" & Text1(1)
DoEvents
List1.AddItem SCK.GetLine
' Destinatário
SCK.SendLine "RCPT TO:" & Text1(2)
DoEvents
List1.AddItem SCK.GetLine
' Corpo
SCK.SendLine "DATA"
DoEvents
List1.AddItem SCK.GetLine
' Cabeçalho da Mensagem
SCK.SendText "From: " & Text1(1) & vbCrLf ' remetente
SCK.SendText "Subject: " & Text1(3) & vbCrLf ' Assunto
SCK.SendText "To: " & Text1(2) & vbCrLf ' Destinatario
SCK.SendText vbCrLf
SCK.SendText Text1(4) & vbCrLf & vbCrLf ' Corpo
DoEvents
' Finaliza
SCK.SendText vbCrLf & "." & vbCrLf
DoEvents
List1.AddItem SCK.GetLine
there:
' Fecha a conexão
SCK.Close
DoEvents
Shape1.BackColor = &HC000&
' Exibe msg de erro se houve algum
If Err.Number <> 0 Then
MsgBox "Erro: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End If
' destroi objeto
Set SCK = Nothing
End Sub
simples e eficiente.
só q como nem tudo é perfeito, após enviar a mensagem pro servidor, veio como resposta a seguinte descrição...
"queued mail for delivery" (que significa que a mensagem está no servidor mas que não foi "repassada a seu destinatário".
a pergunta é...como proceder para que o servidorSMTP repasse a mensagem ao destinatário?
segue abaixo a codificação...
Private Sub Command1_Click()
Dim SCK As New Socket.TCP
Err.Clear
On Error GoTo there
' Servidor e porta
SCK.Host = Text1(0) & ":25"
SCK.TimeOut = 2000
SCK.DoTelnetEmulation = True
' Abre a conexão
SCK.Open
' Vê se conseguiu conectar
If SCK.Connected = True Then
Shape1.BackColor = vbRed
Else
MsgBox "Não Foi PossÃvel Estabelecer a Conexão", vbCritical
Exit Sub
End If
DoEvents
' Começa a emulação do protocolo SMTP
List1.AddItem SCK.GetLine
' Manda o helo
SCK.SendLine "HELO"
DoEvents
List1.AddItem SCK.GetLine
' Remetente
SCK.SendLine "MAIL FROM:" & Text1(1)
DoEvents
List1.AddItem SCK.GetLine
' Destinatário
SCK.SendLine "RCPT TO:" & Text1(2)
DoEvents
List1.AddItem SCK.GetLine
' Corpo
SCK.SendLine "DATA"
DoEvents
List1.AddItem SCK.GetLine
' Cabeçalho da Mensagem
SCK.SendText "From: " & Text1(1) & vbCrLf ' remetente
SCK.SendText "Subject: " & Text1(3) & vbCrLf ' Assunto
SCK.SendText "To: " & Text1(2) & vbCrLf ' Destinatario
SCK.SendText vbCrLf
SCK.SendText Text1(4) & vbCrLf & vbCrLf ' Corpo
DoEvents
' Finaliza
SCK.SendText vbCrLf & "." & vbCrLf
DoEvents
List1.AddItem SCK.GetLine
there:
' Fecha a conexão
SCK.Close
DoEvents
Shape1.BackColor = &HC000&
' Exibe msg de erro se houve algum
If Err.Number <> 0 Then
MsgBox "Erro: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End If
' destroi objeto
Set SCK = Nothing
End Sub
Veja este aqui, pode lhe interessar
ENVIAR E-MAIL, SEM OUTLOOK, SEM OCX, SEM DLL E ETC...
ENVIAR E-MAIL, SEM OUTLOOK, SEM OCX, SEM DLL E ETC...
Tópico encerrado , respostas não são mais permitidas