Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Enviar datos de formulario VB6 por Outlook

Estas en el tema de Enviar datos de formulario VB6 por Outlook en el foro de Visual Basic clásico en Foros del Web. Tengo un formulario con varios campos, Nombre, apellidos y etc. Estos datos estan en diferentes textbox y desearia enviarlos por email, me vale tanto si ...
  #1 (permalink)  
Antiguo 05/08/2008, 05:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Enviar datos de formulario VB6 por Outlook

Tengo un formulario con varios campos, Nombre, apellidos y etc. Estos datos estan en diferentes textbox y desearia enviarlos por email, me vale tanto si estan adjuntos como en el mismo cuerpo del mensaje. Cuando digo enviar me refiero a que se abra el outlook con el mensaje preparado para poner el destinatario y enviar...

Gracias!!
  #2 (permalink)  
Antiguo 05/08/2008, 06:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Añade los controles MAPI (MapiSession y MapiMessages). El código de la conexión sería:

Código:
            'sesion de correo
            With MAPISession1
                .UserName = "Insomnia"
                .NewSession = True
                .DownLoadMail = False
                .SignOn
            End With
            
            With MAPIMessages1
                .SessionID = MAPISession1.SessionID
                .MsgIndex = -1
            End With
Para añadir texto en el cuerpo del mensaje:
Código:
MAPISession1.MsgNoteText = Text1.text & vbcr & Text2.text
De esta forma puedes ir añadiendo los campos que necesites al cuerpo del mensaje del email.

Para finalizar
Código:
MAPISession1.Send True ' Para enviar el email
MAPISession1.SignOff 'Cerrar sesión

--Saludos--
  #3 (permalink)  
Antiguo 05/08/2008, 09:22
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

No termino de entender, no he comentado que soy super nuevo en VB6, y en programación en general.

Entiendo el codigo, pero no donde he de colocar las cadenas de codigo que me envias.

Lo pero de todo es que este componente no lo tengo instalado. ¿tiene solución?
  #4 (permalink)  
Antiguo 06/08/2008, 01:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Lo primero que tienes que hacer es agregar los componentes, para ello, en el menú tienes que ir a Proyecto / Componentes y agregas Microsoft MAPI Controls. Una vez añadido el componente en la lista de los controles te aparecerán dos nuevos, el MAPISession y el MAPIMessages, luego, añades los dos al proyecto (los metes en el formulario como si fueran unos cuadros de texto, aunque en este caso solo se verán en modo diseño)

El código que te he dado lo puedes poner en un botón que ponga crear email o algo parecido.

--Saludos--
  #5 (permalink)  
Antiguo 06/08/2008, 09:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Ya se que te pido que me lo des muy mamado XD

Lo he entendido hasta que me dice que lo ponga todo en el boton... ¿COMO?

asi?

Cita:
Private Sub cmdmail_Click()
'sesion de correo
With MAPISession1
.UserName = "Outlook"
.NewSession = True
.DownLoadMail = False
.SignOn
End With

With MAPIMessages1
.SessionID = MAPISession1.SessionID
.MsgIndex = -1
End With

MAPISession1.MsgNoteText = Text1.Text & vbCr & Text2.Text

MAPISession1.Send True ' Para enviar el email
MAPISession1.SignOff 'Cerrar sesión
End Sub


Estas dos partes del codigo como las coloco?

MAPISession1.MsgNoteText = Text1.Text & vbCr & Text2.Text

MAPISession1.Send True ' Para enviar el email
MAPISession1.SignOff 'Cerrar sesión

Mil gracias, es que he terminado un curso super basico de VB6 y no me entero de algunas cosas aun...

Gracias!
  #6 (permalink)  
Antiguo 07/08/2008, 01:37
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Eso es, cuando digo ponerlo en el botón quería decir en el evento click de un botón (puedes ponerlo en cualquier otro evento que te interese). Me he dado cuenta que tenía un error en el código, las propiedades .MsgNoteText y .Send pertenecen al MAPIMessages en lugar del MAPISession1 como había puesto.

El código quedaría de la siguiente forma:
Código:
Private Sub Command1_Click()
'sesion de correo
With MAPISession1
    .UserName = "Insomnia"
    .NewSession = True
    .DownLoadMail = False
    .SignOn
End With

With MAPIMessages1
    .SessionID = MAPISession1.SessionID
    .MsgIndex = -1
    .RecipIndex = 0
    .RecipType = mapToList
    .MsgNoteText = Text1.Text & vbCr & Text2.Text
    .Send True ' Para enviar el email
End With

MAPISession1.SignOff 'Cerrar sesión

End Sub
El formulario sería el siguiente:



P.D. Una de las condiciones para que funcione es que el usuario tenga instalado y definido como correo predeterminado el Outlook.

--Saludos--
  #7 (permalink)  
Antiguo 07/08/2008, 02:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Te quiero tio! o tia... XD

Ahora lo intento a ver que me sale...

Gracias!!
  #8 (permalink)  
Antiguo 07/08/2008, 02:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Tio

De nada. Comenta como te ha ido.

--Saludos--
  #9 (permalink)  
Antiguo 07/08/2008, 03:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

No ha ido mal del todo, he puesto este codigo exactamente y me a petado en el Send True, tengo outlook 2003 y he agregado los dos componentes pero no les he tocado ninguna opción, lo comento por si hay que tocar algo.

Una pregunta que te queria hacer es: ¿UserName para que es? el nombre del perfil, el otro dia cuando hacia pruebas con el codigo me salio que el perfil seleccionado era erronio, y me mostro luego mi perfil, que en mi caso es Outlook, no se si estara relacionado con eso, hoy con tu codigo me ha salido otra ver, pero solo me sale la primera ver que ejecuto el codigo, mil gracias!

Cita:
Private Sub cmdmail_Click()
'sesion de correo
With MAPISession1
.UserName = "Outlook"
.NewSession = True
.DownLoadMail = False
.SignOn
End With

With MAPIMessages1
.SessionID = MAPISession1.SessionID
.MsgIndex = -1
.RecipIndex = 0
.RecipType = mapToList
.MsgNoteText = tbcliente.Text & vbCr & tbreclam.Text
.Send True ' Para enviar el email
End With

MAPISession1.SignOff 'Cerrar sesión

End Sub
  #10 (permalink)  
Antiguo 07/08/2008, 03:54
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

En la ayuda del VB sobre la propiedad username:
Cita:
Esta propiedad contiene el nombre de la cuenta de usuario deseada para iniciar o cerrar la sesión. Si la propiedad LogonUI es True, una cadena vacía en la propiedad UserName indica que se deberá generar un cuadro de diálogo de inicio de sesión con el campo de nombre vacío. El valor predeterminado es una cadena vacía.
En realidad no se si es necesario poner algo o no, pero yo he puesto insomnia y en realidad funciona todo igual en cualquier equipo.

Como programa de correo yo utilizo el Outlook Express, no se si el problema puede venir por ahí. De todas formas, si quieres te paso el programa con el ejecutable (que a mi me funciona), envíame tu correo por MP para que lo pruebes.

--Saludos--
  #11 (permalink)  
Antiguo 07/08/2008, 05:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Pues me da el mismo error.... ¿se te ocurre alguna cosa?, supongo que es por el outlook 2003...
  #12 (permalink)  
Antiguo 07/08/2008, 05:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Al ser outlook 2003 de la familia Office, puede que tengas que tratarlo como se tratan las hojas de excel, es decir, agregando una referencia (Proyecto / Referencias) del M. Outlook y creando un objeto de ese tipo. En excel se hace de la siguiente forma:

Código:
Dim ExcelApp As New Excel.Application
Dim ExcelHoja As Excel.Worksheet

ExcelApp.Workbooks.Open Destino
Set ExcelHoja = ExcelApp.ActiveSheet
...
Cuando tenga un poco de tiempo intentaré mirarlo. Pero prueba a buscar una referencia a outlook y crear el objeto.

--Saludos--
  #13 (permalink)  
Antiguo 08/08/2008, 04:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Buscando un poco en la red he encontrado el siguiente código.

Código:
    Dim objOL As Outlook.Application
    Dim msg As Outlook.MailItem
        
    Set objOL = New Outlook.Application
    Set msg = objOL.CreateItem(olMailItem)
    
    With msg
        .Subject = "Título del email"
        .Body = text1.text & vbcr & text2.text
        .Send
    End With

    Set objOL = Nothing
Recuerda que tienes que agregar la referencia "Microsoft Outlook 11.0 Object Library" desde Proyecto / Referencias (en este caso al ser una referencia no aparecerá ningún nuevo control, se hace todo desde código)

Suerte.
  #14 (permalink)  
Antiguo 08/08/2008, 05:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Ahora interntare probarlo a evr y te digo algo!
  #15 (permalink)  
Antiguo 08/08/2008, 05:04
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola Insomnia, el código es correcto, pero falta el destinatario

Código:
Dim objOL As Outlook.Application
    Dim msg As Outlook.MailItem
        
    Set objOL = New Outlook.Application
    Set msg = objOL.CreateItem(olMailItem)
    
    With msg
       .To = "[email protected]"
        .Subject = "Título del email"
        .Body = text1.text & vbcr & text2.text
        ' lo siguiente por si quieres adjuntar cualquier archivo
        .Attachments.Add "c:\UnArchivo1.jpg"
        .Send
    End With

    Set objOL = Nothing
    Set msg = Nothing
Saludos
  #16 (permalink)  
Antiguo 08/08/2008, 05:07
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Si es cierto el error que me da es ese, me falta destinatario, la pregunta es...
¿y si queiro insertarlo yo?

Lo idea para mi seria que se abriera el mensaje para poder modificarlo, y poner en el para lo que me interese en cada momento.

Otra opción seria hacer una lista o un text box para ponerlo en VB

Gracias a todos!
  #17 (permalink)  
Antiguo 08/08/2008, 05:12
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
Iniciado por GameOn Ver Mensaje
Si es cierto el error que me da es ese, me falta destinatario, la pregunta es...
¿y si queiro insertarlo yo?

Lo idea para mi seria que se abriera el mensaje para poder modificarlo, y poner en el para lo que me interese en cada momento.

Otra opción seria hacer una lista o un text box para ponerlo en VB

Gracias a todos!
Pues lo pones en un TextBox y punto:

.To = ElTextBox.Text

  #18 (permalink)  
Antiguo 08/08/2008, 05:15
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Ahora me funciona...

Lo unico que como tengo que modificar el ".to" para hacer lo que comento,
¿seria = a tbemail por ejempo?

Lo idea para mi seria que se abriera el mensaje para poder modificarlo, y poner en el para lo que me interese en cada momento.

Otra opción seria hacer una lista o un text box para ponerlo en VB

Gracias a todos!
  #19 (permalink)  
Antiguo 08/08/2008, 05:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

En el código que encontré en Internet ponía lo de la propiedad to, pero lo quite porque GameOn quería seleccionar uno, lo que no sabía es que si no pones usuario da error, igual por comodidad en lugar de tener que introducir el email es mas cómodo que aparezca en blanco y poder seleccionar uno de la libreta del outlook. No se puede hacer de esa forma?.

--Saludos--
  #20 (permalink)  
Antiguo 08/08/2008, 05:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Para introducir el email tienes varias opciones, puedes poner otra caja de texto en el formulario indicando la dirección de email o utilizar un inputbox para que aparezca un nuevo form pidiendo la dirección de email y luego pasarle el valor a la propiedad to como dice Avellaneda

Código:
   .to= text3.text
Teniendo en cuenta que en el text3 escribirás la dirección de email

Dejando el .to como cadena vacía también da error?, es decir, .to = ""

--Saludos--
  #21 (permalink)  
Antiguo 08/08/2008, 05:25
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
Iniciado por Insomnia Ver Mensaje
Hola

En el código que encontré en Internet ponía lo de la propiedad to, pero lo quite porque GameOn quería seleccionar uno, lo que no sabía es que si no pones usuario da error, igual por comodidad en lugar de tener que introducir el email es mas cómodo que aparezca en blanco y poder seleccionar uno de la libreta del outlook. No se puede hacer de esa forma?.

--Saludos--
Hombre, yo lo que haría sería lo siguiente:

Guardar mis contactos en una BD (o un txt), cargarlos en un control ListBox o ComboBox y seleccionar al que se lo quiero enviar:

.To = Combo1.Text

  #22 (permalink)  
Antiguo 08/08/2008, 05:27
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
Iniciado por Insomnia Ver Mensaje
Hola

Para introducir el email tienes varias opciones, puedes poner otra caja de texto en el formulario indicando la dirección de email o utilizar un inputbox para que aparezca un nuevo form pidiendo la dirección de email y luego pasarle el valor a la propiedad to como dice Avellaneda

Código:
   .to= text3.text
Teniendo en cuenta que en el text3 escribirás la dirección de email

Dejando el .to como cadena vacía también da error?, es decir, .to = ""

--Saludos--
Sí, dejando el .To como cadena vacía, también dá error. Hay que poner siempre un destinatario, sino ¿a quién envía el mail?

Saludos
  #23 (permalink)  
Antiguo 08/08/2008, 05:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 18 años
Puntos: 0
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
Iniciado por Avellaneda Ver Mensaje
Hombre, yo lo que haría sería lo siguiente:

Guardar mis contactos en una BD (o un txt), cargarlos en un control ListBox o ComboBox y seleccionar al que se lo quiero enviar:

.To = Combo1.Text

Eso es justo lo que pienso hacer, un ListBox con las personas a las que se les puede enviar, como mola esto del VB

Gracias a todos!!!
  #24 (permalink)  
Antiguo 08/08/2008, 06:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Hola

Ya puestos, empieza a mirar como enlazar a datos, es decir, guardando los datos en una bd y enlazándolo a VB6, no se si en el curso que comentas habéis visto el acceso a datos.

--Saludos--
  #25 (permalink)  
Antiguo 08/08/2008, 06:58
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
Iniciado por Insomnia Ver Mensaje
Hola

Ya puestos, empieza a mirar como enlazar a datos, es decir, guardando los datos en una bd y enlazándolo a VB6, no se si en el curso que comentas habéis visto el acceso a datos.

--Saludos--
No entiendo nada de lo que dices:

- empieza a mirar como enlazar a datos
- es decir, guardando los datos en una bd y enlazándolo a VB6
- no se si en el curso que comentas habéis visto el acceso a datos.

¿qué significa eso?

Saludos
  #26 (permalink)  
Antiguo 11/08/2008, 00:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Enviar datos de formulario VB6 por Outlook

Cita:
No entiendo nada de lo que dices:

- empieza a mirar como enlazar a datos
- es decir, guardando los datos en una bd y enlazándolo a VB6
- no se si en el curso que comentas habéis visto el acceso a datos.

¿qué significa eso?
Hola, me refería a GameOn, que al principio de los post decía que ha echo un curso básico de VB, simplemente intentaba recomendarle que comience a mirar bases de datos con VB.

--Saludos--
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.