Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: .;. en 11 Junio 2009, 20:53 pm



Título: [VB]Crear un mailer de Gmail
Publicado por: .;. en 11 Junio 2009, 20:53 pm
Bueno tampoco os daré muchas explicaciones porque con el código esta lleno de comentarios.

De todos modos ya sabeis que cualquier error me lo decis y os ayudo.


Empezamos creando un nuevo ejecutable.

1º Agregamos un módulo de clase
Código:
Option Explicit

' para la conexión a internet usaremos wininet.dll
Private Declare Function InternetGetConnectedState _
    Lib "wininet.dll" ( _
    ByRef lpdwFlags As Long, _
    ByVal dwReserved As Long) As Long

Private Const INTERNET_CONNECTION_MODEM_BUSY As Long = &H8
Private Const INTERNET_RAS_INSTALLED As Long = &H10
Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20
Private Const INTERNET_CONNECTION_CONFIGURED As Long = &H40

' variables locales que usamos con CDO
Private mServidor As String
Private mPara As String
Private mDe As String
Private mAsunto As String
Private mMensaje As String
Private mAdjunto As String
Private mPuerto As Variant
Private mUsuario As String
Private mContraseña
Private mUseAuntentificacion As Boolean
Private mSSL As Boolean
'las salidas que nos puede dar el envio
Public Event Error(Descripcion As String, Numero As Variant)
Public Event EnvioCompleto()

Function Enviar_Backup() As Boolean
    
    ' Variable de objeto Cdo.Message
    Dim oCDO As Object
          
    ' si hay conexion o no, este sería el primer error ya declarado anteriormente
    If InternetGetConnectedState(0&, 0&) = False Then
       RaiseEvent Error("No se puede enviar el correo. " & _
                        "Verificar la conexión a internet si está disponible", 0)
       Exit Function
    End If
    
    
    
    ' el puerto tiene que ser un numero y que no este vacio
    If Not IsNumeric(puerto) Then
       RaiseEvent Error("No se ha indicado el puerto del servidor", 0)
       Exit Function
    End If
    
    ' Crea un Nuevo objeto CDO.Message
    Set oCDO = CreateObject("CDO.Message")
    
    ' Indica el servidor Smtp para poder enviar el Mail ( puede ser el nombre _
      del servidor o su dirección IP )
    oCDO.Configuration.Fields( _
    "http://schemas.microsoft.com/cdo/configuration/smtpserver") = mServidor
    
    oCDO.Configuration.Fields( _
    "http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    
    ' Puerto. Por defecto se usa el puerto 25, _
     en el caso de Gmail se usa el puerto 465
    
    oCDO.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = mPuerto

    
    ' Indica el tipo de autentificación con el servidor de correo _
     El valor 0 no requiere autentificarse, el valor 1 es con autentificación
    oCDO.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/" & _
                "configuration/smtpauthenticate") = Abs(mUseAuntentificacion)
    
    ' Tiempo máximo de espera en segundos para la conexión, 10 es el numero predeterminado pero puedes poner más
    oCDO.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10

    ' Configura las opciones para el login en el SMTP
    If mUseAuntentificacion Then

    ' Id de usuario del servidor Smtp ( en el caso de gmail, _
     debe ser la dirección de correro mas el @gmail.com )
    oCDO.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusername") = mUsuario

    ' Password de la cuenta
    oCDO.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mContraseña

    ' Indica si se usa SSL para el envío. En el caso de Gmail requiere que esté en True
    oCDO.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = mSSL
    
    End If
    
    ' Estructura del mail
    '''''''''''''''''''''''''''''''''''''''''''''''
    
    ' Dirección del Destinatario
    
    oCDO.To = mPara
    
    ' Dirección del remitente
    oCDO.From = mDe
    
    ' Asunto del mensaje
    oCDO.Subject = mAsunto
    
    ' Cuerpo del mensaje
    oCDO.TextBody = mMensaje
    
    'Ruta del archivo adjunto
    If mAdjunto <> "" Then
        If Len(Dir(mAdjunto)) = 0 Then
            'otro mensaje de error en este caso por no haber especfificado la ruta correcta
            RaiseEvent Error("No se ha encontrado el archivo en la siguiente ruta: ", 0)
            Exit Function
        Else
            'aqui agrega el archivo
            oCDO.AddAttachment (mAdjunto)
        End If
    End If
    
    ' Actualiza los datos antes de enviar
    oCDO.Configuration.Fields.Update
    
    On Error Resume Next
    Screen.MousePointer = vbHourglass
    ' Envía el email
    oCDO.Send
    Screen.MousePointer = 0
    ' aqui comprueba con condicionales que todo se haya realizado correctamente
    If Err.Number = 0 Then
       Enviar_Backup = True
       RaiseEvent EnvioCompleto
    
    ElseIf Err.Number = -2147220973 Then
       RaiseEvent Error("Posible error : nombre del Servidor " & _
                        "incorrecto o número de puerto incorrecto", Err.Number)
    ElseIf Err.Number = -2147220975 Then
       RaiseEvent Error("Posible error : error en el nombre de usuario, " & _
                                                "o en el password ", Err.Number)
    Else
       RaiseEvent Error(Err.Description, Err.Number)
    End If

    ' Descarga la referencia
    If Not oCDO Is Nothing Then
        Set oCDO = Nothing
    End If
    
    Err.Clear
    
    Screen.MousePointer = vbNormal
End Function

'Valores declarados anteriormente sacados de la antigua libreria CDO
Property Get servidor() As String
    servidor = mServidor
End Property
Property Let servidor(value As String)
    mServidor = value
End Property


Property Get para() As String
    para = mPara
End Property
Property Let para(value As String)
    mPara = value
End Property


Property Get de() As String
    de = mDe
End Property
Property Let de(value As String)
    mDe = value
End Property


Property Get Asunto() As String
    Asunto = mAsunto
End Property
Property Let Asunto(value As String)
    mAsunto = value
End Property


Property Get Mensaje() As String
    Mensaje = mMensaje
End Property
Property Let Mensaje(value As String)
    mMensaje = value
End Property


Property Get Adjunto() As String
    Adjunto = mAdjunto
End Property
Property Let Adjunto(value As String)
    mAdjunto = value
End Property


Property Get puerto() As Variant
    puerto = mPuerto
End Property
Property Let puerto(value As Variant)
    mPuerto = value
End Property


Property Get Usuario() As String
    Usuario = mUsuario
End Property
Property Let Usuario(value As String)
    mUsuario = value
End Property


Property Get contraseña() As String
    contraseña = mContraseña
End Property
Property Let contraseña(value As String)
    mContraseña = value
End Property


Property Get UseAuntentificacion() As Boolean
    UseAuntentificacion = mUseAuntentificacion
End Property
Property Let UseAuntentificacion(value As Boolean)
    mUseAuntentificacion = value
End Property


Property Get ssl() As Boolean
    ssl = mSSL
End Property
Property Let ssl(value As Boolean)
    mSSL = value
End Property

Como veis estan todos los comentarios.


2ºAhora en nuestro Form1, creamos un botón de Nombre: cmdsend y de Caption: Enviar mensaje

Y este el código:

Código:
'##############
'# Programado #
'# por P4|3L0 #
'##############
Option Explicit
Private WithEvents correo As CDOMail

Private Sub cmdsend_Click()
Set correo = New CDOMail
'aqui usariamos las propiedades del modulo de clase
With correo
    'servidor smtp de gmail
        .servidor = "smtp.gmail.com"
    'puerto smtp de gmail
        .puerto = 465
        .UseAuntentificacion = True
        'gmail y hotmail usan ssl asi que tenemos que activarlo
        .ssl = True
        'tu usuario
        .Usuario = "usuario@gmail.com"
        'tu contraseña
        .contraseña = "tusabras"
        'el asunto de tu mensaje
        .Asunto = "Sin Asunto"
        'adjuntar, si no quieres que se mande nada pon esto como si fuese un comentario
        .Adjunto = "C:\WINDOWS\explorer.exe"
        'desde que usuario lo envias
        .de = "usuario@gmail.com"
        'a quien se lo mandas
        .para = "usuario2@gmail.com"
        'cuerpo del mensaje
        .Mensaje = "Mensaje deseado"
        'despues de haber comprobado todo
        .Enviar_Backup ' manda el mail
        End With
Set correo = Nothing
End Sub
Private Sub correo_EnvioCompleto()
'si no pasa nada y se envia correctamente
    MsgBox "Mensaje enviado", vbInformation, Me.Caption
End Sub

Private Sub correo_Error(Descripcion As String, Numero As Variant)
    'muestra el error y que ha pasado
    MsgBox Descripcion, vbCritical, Numero
    
End Sub

Como veis solo es el código del botón y las funciones del error o el envio completado, como habeís visto cualquier modificación es muy facil, y esto se puede hacer con yahoo, terra, hotmail, ya.com, etc..

Solo es cuestión de investigar.

Saludos!


Modifico: Creo que si que he cometido el GRAN error de poner eso en el módulo que no hice yo.

Por los demás comentarios, de que no funciona en hotmail, si no lo pruebas e investigas no lo vas a saber, porque cree un programa y si que funciona.

LAMMER, por ese error, no creo, pueden llamarme todo lo demás, creo que si, llevo poco tiempo, pero no creo que se me pueda considerarme lammer.

Respecto a GedZac, pues bueno, no hice más que decir la verdad, pero ya me bannearon no se preocupen.

¿Alguna otra explicación?


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: h0oke en 11 Junio 2009, 21:17 pm
Exelente trabajo.  ::)


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: .;. en 11 Junio 2009, 21:30 pm
Exelente trabajo.  ::)

Gracias.

Saludos!


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: seba123neo en 12 Junio 2009, 02:14 am
es lo mismo que esto metido en una clase... :P

Enviar correo con Microsoft CDO (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/337-enviar-correo-en-vb-con-microsoft-cdo.htm)



Título: Re: [VB]Crear un mailer de Gmail
Publicado por: BlackZeroX en 12 Junio 2009, 02:31 am
es lo mismo que esto metido en una clase... :P

Enviar correo con Microsoft CDO (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/337-enviar-correo-en-vb-con-microsoft-cdo.htm)



mas abajo vez el source...

Código:
Ejemplo 2
En este otro enlace , podés descargar un ejemplo similar usando CDO pero mediante un módulo de clase : Descargar ( para implementarlo mas fácilmente )

darle los creditos por agregarle...¡!

Código
  1. '##############
  2. '# Programado #
  3. '# por P4|3L0 #
  4. '##############
  5.  

Dulces Lunas


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: LeandroA en 12 Junio 2009, 04:25 am
No creo que puedas usarlo con hotmail. saludos


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: ssccaann43 © en 12 Junio 2009, 16:24 pm
es lo mismo que esto metido en una clase... :P

Enviar correo con Microsoft CDO (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/337-enviar-correo-en-vb-con-microsoft-cdo.htm)



mas abajo vez el source...

Código:
Ejemplo 2
En este otro enlace , podés descargar un ejemplo similar usando CDO pero mediante un módulo de clase : Descargar ( para implementarlo mas fácilmente )

darle los creditos por agregarle...¡!

Código
  1. '##############
  2. '# Programado #
  3. '# por P4|3L0 #
  4. '##############
  5.  

Dulces Lunas


Me huele a LAMMER!


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: seclogman en 12 Junio 2009, 16:48 pm
deberias respetar un poco de donde sacas el codigo y no añadirle

Código:
'##############
'# Programado #
'# por P4|3L0 #
'##############

y dos explicaciones. es poco etico pablo


Me huele a LAMMER!

en cuanto a ti, podrias poner comentarios un poco mas productivos, ya que si te has iniciado en la programacion ya sabes como va eso de que necesitas fijarte en otros codes para aprender. Solo es un poco de compresion.


Saludos



Título: Re: [VB]Crear un mailer de Gmail
Publicado por: ssccaann43 © en 12 Junio 2009, 16:54 pm
deberias respetar un poco de donde sacas el codigo y no añadirle

Código:
'##############
'# Programado #
'# por P4|3L0 #
'##############

y dos explicaciones. es poco etico pablo


Me huele a LAMMER!

en cuanto a ti, podrias poner comentarios un poco mas productivos, ya que si te has iniciado en la programacion ya sabes como va eso de que necesitas fijarte en otros codes para aprender. Solo es un poco de compresion.


Saludos



Por lo que veo tienes poco tiempo en foros! Lo que coloque o deje de colocar en caso de que falte las reglas es problema de un MODERADOR, no tuyo. Si te ofendió que llamase LAMMER al caballero que se acredita el source, pues lo lamento. En todos los foros de programación los LAMMERS son mal aceptado, de echo logramos sacar a uno que fue muy descarado en este foro. Y quien continue así correrá el mismo riesgo. Y si no te gusta, ese es tú problema. Por cierto no estoy iniciandome, tengo AÑOS desarrollando.

Soy como soy y tú no vas a cambiarlo.


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: seclogman en 12 Junio 2009, 17:03 pm
deberias respetar un poco de donde sacas el codigo y no añadirle

Código:
'##############
'# Programado #
'# por P4|3L0 #
'##############

y dos explicaciones. es poco etico pablo


Me huele a LAMMER!

en cuanto a ti, podrias poner comentarios un poco mas productivos, ya que si te has iniciado en la programacion ya sabes como va eso de que necesitas fijarte en otros codes para aprender. Solo es un poco de compresion.


Saludos



Por lo que veo tienes poco tiempo en foros! Lo que coloque o deje de colocar en caso de que falte las reglas es problema de un MODERADOR, no tuyo. Si te ofendió que llamase LAMMER al caballero que se acredita el source, pues lo lamento. En todos los foros de programación los LAMMERS son mal aceptado, de echo logramos sacar a uno que fue muy descarado en este foro. Y quien continue así correrá el mismo riesgo. Y si no te gusta, ese es tú problema. Por cierto no estoy iniciandome, tengo AÑOS desarrollando.

Soy como soy y tú no vas a cambiarlo.


Si tanto tiempo llevas TU en foros por que te dejas engañar por mi numero de post? llevo en foros como 5 años y he moderado unos 10 y administrado dos y tambien de programacion y te aseguro que no han sido de estos que llevan cuatro dias subidos a un server. Y tambien se por que digo esto.

Si un usuario que se empieza a mover por la programacion aunque se haya acreditado un codigo que no es suyo, le viene un comentario de ese tipo, nada productivo pues creo que le quita las ganas de seguir moviendose por este mundo. Y precisamente eso es lo que quiero evitar, y yo como comprenderas solo te di mi opinion, o acaso eso no lo puedo hacer? jaja me encantan los que van de listos por la vida, y se creen de lo mejorcito por ser desarroyadores sin una pizca de humildad, en fin solo es para que piensen un pokito que quizas a quien le dices lammer es un chaval que se acaba de iniciar con ganas y le venga un listillo solo pork lleva mas tiempo programando a decirle lammer.

En fin deviamos mas el tema?... ahi lo llevas si quieres haces caso y si quieres no, solo digo una opinion humilde ; )


PD: logicamente todo depende tambien del tipo de code, sencillo o mas complejo :-P


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: ssccaann43 © en 12 Junio 2009, 17:14 pm
Quien se acredite lo que no le pertenece pues sencillamente será tratado como corresponde! Te guste o no te guste, si quieres ser un salvador para los LAMMERS en sus inicios, pues es tú problema, no el mío. Sencillamente aquel que se acredite lo que no le corresponde, lo criticaré hasta que comprenda que no puede hacerlo. Todos son bienvenidos en el foro, tan sencillo que hay reglamentos y no solo eso, es cuestión de respeto a los demás, a quienes te ayudan y te muestran sus conocimientos. En fin, ya muere el tema. PABLO, respeta la autoría de los sources. Buen día a todos!


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: seclogman en 12 Junio 2009, 17:18 pm
si llevas razon, eso no te lo quito, pero no se si veo a alguien con ganas de aprender y demas, no tiene por que ser un lammer sino un copy&paste verdad pablo ¬¬ no vuelvas a hacerlo o ssccaann43 te peta el culo xD ( todo en buena onda  ;) )



un saludo :)


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: ssccaann43 © en 12 Junio 2009, 17:19 pm
Jajaja... =)


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: cassiani en 12 Junio 2009, 21:39 pm
vamos que si decimos todo lo que pensamos nos limitan la entrada al foro, si esta mal, dejemos que el moderador haga su trabajo ..

saludos,


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: XcryptOR en 13 Junio 2009, 02:15 am
igual tuve ciertos problemillas por el foro de gedzac con unos comentarios de pablo y algunos codes, aunque en CM es uno de los moderadores por cierto manejas bien el C, pero si te estas iniciando en el VB, el error nuemro 1 es postearlo como tuyo sabiendo que te lo copiaste y el error mas grande es postearlo en elhacker donde hay tantos buenos programadores vb, que conocen casi todo el open source de VB. hay que ser más precavido.


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: seba123neo en 13 Junio 2009, 04:39 am
es lo mismo que esto metido en una clase... :P

Enviar correo con Microsoft CDO (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/337-enviar-correo-en-vb-con-microsoft-cdo.htm)



mas abajo vez el source...

Código:
Ejemplo 2
En este otro enlace , podés descargar un ejemplo similar usando CDO pero mediante un módulo de clase : Descargar ( para implementarlo mas fácilmente )

darle los creditos por agregarle...¡!

Código
  1. '##############
  2. '# Programado #
  3. '# por P4|3L0 #
  4. '##############
  5.  

Dulces Lunas


tenes razon ░▒▓BlackZeroҖ▓▒░  no lo habia visto a eso del modulo...o sea que se confirma mas todavia que fue un copy & paste importantisimo...al no verlo yo pense darle por lo menos los creditos de haberlo puesto en una clase al codigo...pero ni eso ahora...

ese es el problema del open source...cualquiera lo ve y lo usa en su programa y se pone los creditos...eso es inaceptable....por lo menos para el autor real del codigo...si te ve el autor real no se que te haria...por las dudas aviso que si van a copiar codigo de esa web...yo me conozoco los codigos de esa web como la tabla del 1 y capto al instante si pertenece a esa web...admito que he usado y cualquiera puede usar los codigos de esa pagina,porque para eso estan obviamente y es de gran ayuda siempre...esta para los programadores...pero dejar lo creditos siempre...y si no tiene creditos por lo menos poner que fue sacado de ahi...pero ya ponerse el credito eso ya es de mala leche...

saludos.


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: ssccaann43 © en 16 Junio 2009, 00:23 am
Seba cierra el post...!


Título: Re: [VB]Crear un mailer de Gmail
Publicado por: .;. en 18 Junio 2009, 09:58 am
Rectificado.

Lo de Gedzac es otra historia.