** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Enviar firma -imagen a correo por access
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEnviar firma -imagen a correo por access

 Responder Responder Página  12>
Autor
Mensaje
Zuesangel Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Septiembre/2011
Localización: Guatemala
Estado: Sin conexión
Puntos: 151
Enlace directo a este mensaje Tema: Enviar firma -imagen a correo por access
    Enviado: 02/Febrero/2022 a las 23:28
Buenos tardes compañeros estoy con un inconveniente sobre como enviar mi firma, desde el cuerpo de correo desde access pero mi firma es una imagen . He estado haciendo algunas pruebas con este codigo pero no he encontrado la manera ya que si lo envia pero solamente la dirección de la imagen o el path de la imagen no se visualiza la imagen de la firma  en el cuerpo del correo:

Dim oApp As Outlook.Application
Dim oMail As Outlook.MailItem
Const pathImage As String = "C:\Users\User\Downloads\Emails\Image\firma.jpeg"

    If Me.emailUsuario <> "" Then
        Set oApp = CreateObject("Outlook.Application")
        Set oMail = oApp.CreateItem(olMailItem)
        With oMail
            .To = Me.emailUsuario
            .CC = Me.email_super
            .Subject = Nz(Me.Asunto, "")
            .Body = Nz(Me.Body, "")
            .HTMLBody = .HTMLBody & pathImage
            .Display
            .Send
    End With
        
        Set oApp = Nothing
        EnvioEmail = True

De antemano muchas gracias por su atención y ayuda.Thumbs Up
Has el Bien y no mires a quien
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 03/Febrero/2022 a las 00:29
Hola,

Si tu Outlook tiene configurada la firma, entonces veo varias cosas que creo que debes cambiar

1. Inspector. Después del Set oMail hay que asignar un Inspector.

Para declararlo
Dim oInspector As Outlook.Inspector

Para asignarlo
Set olnspector = oMail.GetInspector

No recuerdo exactamente el motivo del porque se declara pero es como si hiciera un "Display" sin hacerlo y tiene acceso al mail. Cuando pasa eso, el HTMLBody del MailItem contiene la firma.

2. Si es un correo HTML, indícalo

oMail.BodyFormat = olfFormatHTML

3. Y si sigue siendo un HTML, el utilízalo

oMail.HTMLBody = Nz(Me!Body, "") & oMail.HTMLBody
(esta línea es la segunda clave: tomas tu texto y lo unes a lo que hubiera... o sea: la firma)

La linea de .Body no sirve para nada en este escenario, así como la constante del pathimage .

Haz pruebas y nos cuentas que tal

Un saludo

Xavi, un minyó de Terrassa

Mi web
Arriba
Zuesangel Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Septiembre/2011
Localización: Guatemala
Estado: Sin conexión
Puntos: 151
Enlace directo a este mensaje Enviado: 03/Febrero/2022 a las 02:39
Buenas Noches xavi , gracias por tu informacion, he estado haciendo algunas pruebas pero me sale errores. 
If Me.emailUsuario <> "" Then
        Set oApp = CreateObject("Outlook.Application")
        Set oMail = oApp.CreateItem(olMailItem)
        Set olnspector = oMail.GetInspector
        
        With oMail
            .To = Me.emailUsuario
            .CC = Me.email_super
            .Subject = Nz(Me.Asunto, "")
            .Body = Nz(Me.Body, "")
            .HTMLBody = "<img src='C:\Users\MiguelAngel\Downloads\Emails\Image\firma.jpeg'" & "width='814' height='33'><br>"
            .Send
    End With
        
        Set oApp = Nothing
        EnvioEmail = True
 no se si lo estare haciendo mal, pero con :
oMail.BodyFormat = olfFormatHTML , no me lo deja enviar , asi que lo omite y solo envie este codigo como se mira arriba pero tampoco funciono. talvez tengas algun ejemplo? para ver como se aplicaria el codigo. de antemano muchas gracias .Handshake
Has el Bien y no mires a quien
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 03/Febrero/2022 a las 07:49
1. Escribir al vuelo tiene sus cosas. En esa constante se me coló una f de mas. Es olFormatHTML
2. Para que funcione debes hacer Display + Send (yo pensaba que no pero las pruebas demuestran que si)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Zuesangel Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Septiembre/2011
Localización: Guatemala
Estado: Sin conexión
Puntos: 151
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 00:21
Nuevamente gracias, pero ahora no me envía el correo. Este es el código que tengo corrígeme se tengo algo malo y deplano que si ya que no me funciona, si me haces el favor :
With oMail
            .To = Me.emailUsuario
            .CC = Me.email_super
            .Subject = Nz(Me.Asunto, "")
            .Body = Nz(Me.Body, "")
            .BodyFormat = olFormatHTML
            .HTMLBody = "<HTML><img src='C:\Users\usuario\Downloads\Emails\Image\firma.jpeg'" & "width='814' height='33'><br></HTML>"
            .Display
            .Send
    End With
o talvez si me envías algún ejemplo para ver como se aplica el código, si no es mucha molestia.
disculpa que soy algo novato en esto.Thumbs Up
Has el Bien y no mires a quien
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 00:51
No tengo ningún ejemplo hecho que pueda pasarte.

Mi consejo es que leas un poco mejor lo que se te dice. Te he puesto varias cosas que no parece que apliques.

1. No veo la declaración de variables (Outlook.Application, Outlook.MailItem e Outlook.Inspector)
2. No veo la asignación de variables (de las 3)
3. Estas utilizando el Body del MailItem cuando, a continuación, le dices que el formato es HTML. No sirve para nada ya que...
--> si es texto plano se utiliza Body
--> si es HTML se utiliza HTMLBody
4. En el HTMLBody estas pasando unicamente una url. Ahí si que ya no entiendo nada.
5. Al ser HTML y poner el texto en el Body, no se debería adjuntar nada

A ver si me explico
Imagina que creas un nuevo correo de forma manual. ¿Verdad que aparece tu firma según tienes configurado? 
Pues la gracia está en que, cuando se crea un objeto MailItem por código, si se muestra (Display) se mostrará con la firma. Pero, para que lo haga bien, primero debe asignarse el Inspector.
Y para que respete la firma (que no es más que el HTMBody original de un nuevo correo), lo que debes hacer es concatenar tu Body con el HTMLBody original.
Finalmente, si tu Body no es texto enriquecido, podrás utilizar un método llamado HTMLEncode para convertir texto plano en texto HTML (¡Gracias Happy! Wink)

Resumiendo
- Declaración de variables
Dim oApp....
Dim oMail...
Dim oInpector...

- Asignación de variables
Set oApp = ....
Set oMail = oApp....
Set oInspector = oMail....

- Completamos los campos .To .CC .Subject .BodyFormat 
- El campo .HTMLBody lo creamos concatenando el Body que pudieras tener pero en formato HTML con el HTMLBody original (o séa: la firma)
.HTMLBody= HtmlEncode(Me!Body) & .HTMLBody

- Mostramos y lanzamos (hay que hacer los 2 pasos)
.Display
.Send

Si sigues esos pasos, debería, por lo menos, enviar algo.

Un saludo

Xavi, un minyó de Terrassa

Mi web
Arriba
Zuesangel Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Septiembre/2011
Localización: Guatemala
Estado: Sin conexión
Puntos: 151
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 03:43
Muchas gracias, nuevamente. Discúlpame que no me supe explicar, ahora me explico.
tengo un formulario echo en access, en donde tengo dos cuadros  combinados donde se busca los correos ingresados en una base de datos  y los despliega en un cuadro de texto que seria .to .cc el .Body y .Subject esos los tengo manual, solo para ingresar información que va ir en el correo.
en el .HTMLBody tendria que ir la firma pero como la firma es imagen no la pise en el .body. 

Este código va en el botón enviar donde valida y llama a la función EnvioEmail:
If EnvioEmail Then
        MsgBox "MENSAJE ENVIADO", vbInformation, "Aviso"
        Call Limpiar
   End If


Este seria  la función:
Private Function EnvioEmail() As Boolean
On Error GoTo ManipulaError
Dim oApp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim oInspector As Outlook.Inspector


    If Me.emailUsuario <> "" Then
        Set oApp = CreateObject("Outlook.Application")
        Set oMail = oApp.CreateItem(olMailItem)
        Set olnspector = oMail.GetInspector
        
        With oMail
            .To = Me.emailUsuario
            .CC = Me.email_super
            .Subject = Nz(Me.Asunto, "")
            .Body = Nz(Me.Body, "")
            .BodyFormat = olFormatHTML
            .HTMLBody = HtmlEncode(Me!Body) & .HTMLBody & "<HTML><img src='C:\Users\MiguelAngel\Downloads\Emails\Image\firma.jpeg'" & "width='814' height='33'><br></HTML>"
            .Display
            .Send
    End With
        
        Set oApp = Nothing
        EnvioEmail = True
    Else
        MsgBox "ESPECIFIQUE UNA DIRECCION DE CORREO ELECTRONICO", vbExclamation, "Aviso"
        Me.emailUsuario.SetFocus
    End If
    
    
Salir:
    Exit Function
ManipulaError:
    MsgBox Err.Number & " : " & Err.Description
End Function 

te envió un link  donde tengo una imagen como es que esta el formulario.

https://www.mediafire.com/file/7qta2e1xbwqc87n/correo.JPG/file
Te lo doy así porque no encontré un repositorio para alojar imagen que me aceptara, de antemano muchas gracias por tu atención. Thumbs Up


Has el Bien y no mires a quien
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 11:34
Buenas Zuesangel.
Aquí te dejo el código que yo tengo para que aparezca una imagen (la tuya) al enviar un correo a través de outlook. En el correo aparece la dirección, el asunto y la imagen.

Dim vDest As String        'Variable con el valor del campo Mail
Dim Olk As Outlook.Application
Set Olk = CreateObject("Outlook.Application")
vDest = Nz(Me.Mail.Value, "")

'Creamos un nuevo mensaje de Outlook
Dim OlkMsg As Outlook.MailItem
Set OlkMsg = Olk.CreateItem(olMailItem)

'Creamos la información del mail
With OlkMsg
    'Definimos los elementos del mail
    Dim OlkDestinatario As Outlook.Recipient            'Destinatario
    Set OlkDestinatario = .Recipients.Add(vDest)
    OlkDestinatario.Type = olTo
        .Subject = "Mail de ejemplo"                'Asunto
        .HTMLBody = "<HTML> " & _
                "<BODY>" & _
                    "<P>" & "<IMG SRC = 'C:\Users\MiguelAngel\Downloads\Emails\Image\firma.jpeg'>" & "</P>" & _
                "</BODY> " & _
                "</HTML>"
    .Display
End With

'Eliminamos la instancia
Set Olk = Nothing
Set OlkMsg = Nothing
Set OlkDestinatario = Nothing

Probado y funcionando.
Saludos.


Editado por Nomada - 05/Febrero/2022 a las 11:46
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 13:39
No se si desafino, pero... ¿no sería mas fácil usar una plantilla para el mail que ya contuviera la Firma? o simplemente decir al programa de correro que tiene que usar determinada firma?

Editado por acilu55 - 05/Febrero/2022 a las 13:40
Gracias a todos de antemano
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 05/Febrero/2022 a las 16:54
@acilu55
Lo de "decir al programa de correo que tiene que usar determinada firma" es justamente lo que se hace con el Inspector.

Pero yo tengo dudas de que el usuario tenga una firma configurada por lo que la respuesta de Nomada podría valer.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 06/Febrero/2022 a las 12:02
Buenas.
Ahora mismo yo estoy utilizando ese código. Si necesito otra imagen, cambio la ruta y hecho. No hace falta ni abrir el código, creo un campo independiente donde le pongo la ruta y voilà.

La verdad es que el lenguaje HTML es fácil de entender, además de ofrecer distintas acciones. Al incrustarlo dentro del código VB los resultados son satisfactorios.

Saludos.
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Enlace directo a este mensaje Enviado: 06/Febrero/2022 a las 19:11
@xavi
a lo que me refería es a esto:

Set OUTAPP = CreateObject("Outlook.Application")
Set OUTMAIL = OUTAPP.CreateItemFromTemplate(Application.CurrentProject.Path & "\oficio.oft")

With OUTMAIL
.To = mail ' que tendremos en algun sitio para buscarlo
.cc = ""
.bcc = ""
.BodyFormat = olFormatHTML       
.Subject = "lo que necesitemos"
adjunto1 = Application.CurrentProject.Path & "\archivo_a_adjuntar_si_lo_hay.pdf"
.Attachments.Add (adjunto1)
.....

siendo la plantilla oficio.oft la que tiene la imagen, las condiciones de protección de datos etc.etc.

es más, creo que me lo enseñaste tú hace unos ocho años o así, la única pega que tengo es que para que el servidor de correo no me lo rechace tengo que hacer que los 700 envios los espacie de 20 en 20 y se pase la noche trabajando.

Gracias a todos de antemano
Arriba
Zuesangel Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Septiembre/2011
Localización: Guatemala
Estado: Sin conexión
Puntos: 151
Enlace directo a este mensaje Enviado: 07/Febrero/2022 a las 02:40
Muchas gracias nuevamente, perdón por mi ignorancia sobre el Inspector pero no se como utilizarlo y escoger mi plantilla de firma,  ya que si lo tengo configurado en el Outlook, con el código que me brindaste parece que si funcionaba y de igual manera este ultimo código que me brindaste también lo que pasa es que tantas pruebas que hice que hotmail.com que deplano me bloqueo por spam digo yo, ya que hice la prueba creando otra cuenta y si me funciono. Les estoy agradecido con la ayuda y apoyo.Thumbs Up
Has el Bien y no mires a quien
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 14/Febrero/2022 a las 18:46
No recuerdo cuando, pero hace tiempo, estube con el tema de la firma en outlook  enviando desde access:

La mejor solucion que encontrre fue meter en un campo el texto html de la firma (o firmas) y  pegarla al final del cuerpo del correo.

No se si es lo que buscas 
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 14/Febrero/2022 a las 18:59
Publicado originalmente por acilu55 acilu55 escribió:

es más, creo que me lo enseñaste tú hace unos ocho años o así

Confused

Madre mía! Pues que mal estamos algunos...
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable