Me pregunto si hay una forma de enviar un correo electrónico (SMTP) a través de VB6. Tengo una aplicación que solo necesita enviar un correo electrónico simple cuando el usuario finaliza para que un grupo sepa que la aplicación se ha procesado. ¿Hay una manera de hacer eso?Enviando un correo electrónico a través de VB6
Respuesta
Sí - depende de la versión de Windows que esté utilizando. Asumiendo una de las versiones posteriores - CDO.Message funciona muy bien.
Sub SendMessage(MailFrom,MailTo,Subject,Message)
Dim ObjSendMail
Set ObjSendMail = CreateObject("CDO.Message")
'This section provides the configuration information for the remote SMTP server.
With ObjSendMail.Configuration.Fields
.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Send the message using the network (SMTP over the network).
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smpt server Address"
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 'Use SSL for the connection (True or False)
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
' If your server requires outgoing authentication uncomment the lines below and use a valid email address and password.
' .Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic (clear-text) authentication
' .Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = MailFrom
' .Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = yourpassword
.Update
End With
'End remote SMTP server configuration section==
ObjSendMail.To = MailTo
ObjSendMail.Subject = Subject
ObjSendMail.From = MailFrom
' we are sending a html email.. simply switch the comments around to send a text email instead
ObjSendMail.HTMLBody = Message
'ObjSendMail.TextBody = Message
ObjSendMail.Send
Set ObjSendMail = Nothing
End Sub
Al establecer una referencia a la biblioteca también recibe constantes con nombre para esos nombres de campo y números mágicos. – Bob77
Si todo funciona correctamente has las bibliotecas CDOSYS instalado en su máquina:
CDO Messaging - MSDN
Creating and Sending a Message - MSDN
Sending email using CDOSYS (THE REAL DEAL)
ASP Sending e-mail with CDOSYS
Si usted no tiene esa biblioteca (y aren' t capaz de instalarlo), entonces siempre hay CDONTS para recurrir, pero está en desuso:
yo encontramos este here:
Dim UserName$, UserMail$, MailRecipiant$, MailBody$, SockData$
Private Sub Command1_Click()
UserName = "YourUserName_or_Addr"
UserMail = "Your Name <[email protected]>"
MailRecipiant = UserMail
MailBody = "The message goes here"
Winsock1.LocalPort = 0
Winsock1.RemoteHost = "smtp-server"
Winsock1.RemotePort = 25
Winsock1.Connect
End Sub
Private Sub Winsock1_Connect()
Label1 = "Sending message..."
Winsock1.SendData "EHLO " & UserName & vbCrLf
If Not WaitFor("250") Then GoTo 100
Winsock1.SendData "MAIL FROM: " & UserMail & vbCrLf
If Not WaitFor("250") Then GoTo 100
Winsock1.SendData "RCPT TO: " & MailRecipiant & vbCrLf
If Not WaitFor("250") Then GoTo 100
Winsock1.SendData "DATA" & vbCrLf
If Not WaitFor("354") Then GoTo 100
Winsock1.SendData MailBody & vbCrLf & "." & vbCrLf
If Not WaitFor("250") Then GoTo 100
Winsock1.SendData "QUIT" & vbCrLf
If Not WaitFor("221") Then GoTo 100
Label1 = "Message sent"
GoTo 200
100
Label1 = SockData
200
Winsock1.Close
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData SockData
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Label1 = "Error: " & Description
SockData = "Error"
Winsock1.Close
End Sub
Private Function WaitFor(SockResponse As String) As Boolean
Do While Left(SockData, 3) <> SockResponse And Left(SockData, 3) <> "220" And Left(SockData, 3) <> "250"
DoEvents
If Left(SockData, 3) > "400" Then Exit Function
Loop
WaitFor = 1
SockData = ""
End Function
¿por qué derribaron la votación? – SQLMason
Lo probé y funciona en VB 6.0 ... – SQLMason
¿Quizás porque este enfoque falla si necesita autenticación cifrada o transmisión SSL/TLS? Esos son requisitos bastante comunes más. Los archivos adjuntos y el correo HTML también agregan más clunkiness a este acercamiento de rollo propio. Sin embargo, es genial en casos limitados. – Bob77
Dave tiene una buena solución si realmente se necesita para enviar correo electrónico desde el PC del cliente. Sin embargo, a veces te metes en problemas con los firewalls y tal. En el caso de que se conecte a un servidor SQL, he encontrado que es más simple y fácil de administrar si realiza un proxy de su correo a través de SQL Server (ya sea haciendo cola en una tabla de correo saliente o llamando al xp_sendmail
proc almacenado).
Aquí hay un tutorial sobre cómo obtener la configuración de SQL Mail y trabajar en el servidor, y al final se muestra cómo usar un procedimiento almacenado para enviar un correo electrónico.
He encontrado esta solución que es ventajoso porque:
- de Windows 7 ordenadores estaban bloqueando todo SMTP saliente
- La implementación de todos los reintentos y como hacer saliente de correo electrónico "derecho" era bastante complicada
- Uso el método de cola con SQL Server, pero no configurando realmente SQL Mail en mis bases de datos de desarrollo o prueba, los correos electrónicos permanecían en la cola a menos que me estuviera ejecutando contra el servidor de producción
Hemos usado el control OstroSoft SMTP anteriormente con muy buenos resultados.
- 1. Enviando correo electrónico demorado de
- 2. Enviando correo electrónico masivo solicitado
- 3. SMTP enviando un correo electrónico de prioridad
- 4. Enviando correo electrónico en C#
- 5. Enviando un correo electrónico HTML usando Swift
- 6. Enviando un correo electrónico a la cuenta de yahoo
- 7. ¿Enviando un correo electrónico con un archivo adjunto a través de GMailSender?
- 8. Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
- 9. GitLab ¿El correo electrónico no está enviando?
- 10. Enviando correo electrónico HTML usando Python
- 11. Enviando correo electrónico usando email.mime.multipart en Python
- 12. Enviando un correo electrónico cuando se lanza una excepción
- 13. enviando un correo electrónico con varios archivos adjuntos
- 14. Enviando correo electrónico usando GMail en android
- 15. Enviando un correo electrónico desde un web2py en GAE
- 16. enviando un archivo adjunto de correo electrónico usando TCPDF
- 17. Enviando correo electrónico en asp.net a través del servidor de host local
- 18. distribución Ad-hoc a través de correo electrónico
- 19. Enviando correo a través de sendmail desde python
- 20. Enviando correo electrónico en Java utilizando Apache Commons email libs
- 21. Enviando gráfico de visualización de google al correo electrónico
- 22. Enviando correo a un gran número de personas
- 23. Restablecimiento de contraseña enviando contraseñas temporales por correo electrónico
- 24. Enviando correo electrónico en Android usando la API de JavaMail
- 25. Enviando resultados de una matriz aleatoria al correo electrónico php
- 26. adjunto de correo electrónico a través de análisis mime4j
- 27. envío de correo electrónico a través de Gmail en .NET
- 28. Enviando correo electrónico usando Zend Framework y PHP
- 29. Enviando correo electrónico usando smtp y estableciendo el id-mensaje
- 30. Enviando correo electrónico HTML usando PHP: incluyendo el archivo HTML
Véase también http://stackoverflow.com/questions/3539242/sending-e-mail-via-smtp-using-vb6 http://stackoverflow.com/questions/5155611/send-emails-through-vb6- if-no-email-client – MarkJ