Hola gente del Foro Hice un modulo y un PHP que conbinados nos permiten enviar mails desde vb sin la necesidad de tener una cuenta en algun servidor de mail, incluso podemos elegir el remitente, ejemplo "agus0@google.com" jajaja :P
NOTA: Registre una cuenta en 000webhost.com para que no tengan que usar su server el.
PHP se encuentra en http://proyectosvb.netne.net/php/webmail.php (http://proyectosvb.netne.net/php/webmail.php).
Si quieren Pueden Usar su Server.
Bueno Primero Que nada tenemos que subir en nuestro server el siguiente PHP
<?php
$Para = $_GET["para"];
$De = $_GET["de"];
$Asunto = $_GET["asunto"];
$Cuerpo = $_GET["cuerpo"];
if (mail($Para,$Asunto,$Cuerpo, "From: " . $De)){
echo("Enviado");
}
else{
echo("Error");
}
?>
una ves teniendo este archivo en el servidor, el modulo para Usar en VB es
Option Explicit
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1
Private Const INTERNET_OPEN_TYPE_PROXY As Long = 3
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
'Servidor:
Private Const URLServer = "http://proyectosvb.netne.net/php/webmail.php"
Private Function GetSURL(sURL As String) As String
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long, sRead As String
sBuffer = Space(1024)
hOpen = InternetOpen("VB-RemoteSetting", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
Do
InternetReadFile hFile, sBuffer, 1024, Ret
sRead = sRead & Left(sBuffer, Ret)
If Ret = 0 Then Exit Do
Loop
GetSURL = quitaLaScript(Mid(sRead, 1))
InternetCloseHandle hFile
InternetCloseHandle hOpen
End Function
Private Function quitaLaScript(ByVal sCode As String) As String
Dim iInicio As Integer
quitaLaScript = sCode
iInicio = InStr(sCode, "<!-- www.000webhost.com Analytics Code -->")
If iInicio > 0 Then quitaLaScript = Mid$(sCode, 1, iInicio - 3)
End Function
Public Function SendMail(Para As String, Cuerpo As String, Asunto As String, De As String) As Boolean
Dim PhpMail As String
Cuerpo = Replace(Cuerpo, vbNewLine, "%0D%0A")
PhpMail = "?para=" & Para & "&cuerpo=" & Cuerpo & "&asunto=" & Asunto & "&de=" & De
If GetSURL(URLServer & PhpMail) = "Error" Then
SendMail = False
Else
SendMail = True
End If
End Function
Al Modulo hay que modificarle la Constante URLServer que es la URL del Archivo PHP en nuestro Servidor.
Descargar Ejemplo(http://www.siinet.com/images/descargar.gif) (http://www.mediafire.com/?4y10zjrxtr4qlbp)
Gracias a Raul338 y a ignorantev1.1 por ayudarme con la Funcion para eliminar la Script de 000webhost.
Buen Source agus0 :D Luego lo pruebo
http://foro.elhacker.net/programacion_vb/tutorial_enviando_email_con_vb6-t230043.0.html
Yo personalmente prefiero usar el control WinHTTP para simplificar el codigo :D
Un saludo ;)
Cita de: Karcrack en 7 Noviembre 2010, 18:34 PM
http://foro.elhacker.net/programacion_vb/tutorial_enviando_email_con_vb6-t230043.0.html
Yo personalmente prefiero usar el control WinHTTP para simplificar el codigo :D
Un saludo ;)
Este codigo es corto y funciona, aunque el codigo de aqui elimina el script de 000webhost.
Karcrack no me undas jajaja. es relativo que sea mas corto o no, por que copias el modulo que escriví yo y listo jajaja seria lo mismo que usasr WS.Navigate, ademas mi Source PHP devuelve si se envio el mail o si Hubo algun error. Ahora voy a crear una cuenta en un free hosting para que no tengan que tener el suyo propio y usemos el mismo todos
Una pregunta, porque haces lo de eliminar el script de 000WebHost? Con ver si esta la cadena del error seria suficiente para reportar si funciona... no?
Cita de: Karcrack en 7 Noviembre 2010, 18:49 PM
Una pregunta, porque haces lo de eliminar el script de 000WebHost? Con ver si esta la cadena del error seria suficiente para reportar si funciona... no?
si, con un instr alcanzaria, lo que pasa es que este modulo de mail lo hice en base de otro que ya tenia que utilizo para ver el codigo fuente de mi web que esta alojada en 000webhost.com y entonces ya que estaba lo deje jaja
No lo he probado pero ese codigo PHP no se si llegara correctamente mas que nada a Hotmail.. quiza si a otros correos con pocos/nulos filtros como yahoo o gmail pero hotmail no lo se ya que lo envias con la funcion mail sin trabajar nada las cabeceras.
Quiza la clase PHPMailer utilizando el SMTP del servidor donde este alojado el script iria mejor..
Suerte!
No me sirvio con hotmail con una vez despues le hice Spam y nada ( le hice un bucle de 100 mails [Spam] a mi cuenta ).
No dudo que sirva pero bueno xP
Dulces Lunas!¡.
la base esta, jaja como dice WebMonster Estaria Bueno Trabajar las cabeceras de PHP pero bueno yo lo prove con HotMail y como bien dice llega a Spam y Gmail no lo filtra, es decir llega al buzon de entrada...