[Source] "mWebMail.bas" Enviar Mail con Cualquier Remitente

Iniciado por agus0, 7 Noviembre 2010, 18:11 PM

0 Miembros y 1 Visitante están viendo este tema.

agus0

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.
Si quieren Pueden Usar su Server.


Bueno Primero Que nada tenemos que subir en nuestro server el siguiente PHP

Código (PHP) [Seleccionar]

<?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

Código (vb) [Seleccionar]

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

Gracias a Raul338 y a ignorantev1.1 por ayudarme con la Funcion para eliminar la Script de 000webhost.


wirelesswifi

#1
Buen Source agus0  :D Luego lo pruebo

Karcrack

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 ;)

wirelesswifi

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.

agus0

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

Karcrack

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?

agus0

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

WebMonster

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!

BlackZeroX

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!¡.
The Dark Shadow is my passion.

agus0

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...