** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Envio de correos con Vbsendmail
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEnvio de correos con Vbsendmail

 Responder Responder
Autor
Mensaje
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Tema: Envio de correos con Vbsendmail
    Enviado: 17/Enero/2018 a las 21:01
Alguien me puede decir que esta mal en este codigo?
me dice " Se ha producido el error '7' en tiempo de ejecucion... memoria insuciciente"
he probado el codigo de envio de forma manual y funciona. el error me señala la linea roja.



Dim miasunto As String, micabecera As String, micuerpo1 As String, micuerpo2 As String
Dim micuerpo3 As String, midespedida As String, mifirma As String, mensage_HTML As String, micliente As String
Dim miformato
miformato = Me.formato

Dim Rs As DAO.Recordset

Set Rs = CurrentDb.OpenRecordset("clientes")
If Rs.RecordCount > 0 Then
Do While Not Rs.EOF
If Rs!Comunicar = True Then
cli = Rs!NOMBRE 'Nz(DLookup("[nombre]", "clientes", "[Id]=" & miid & ""), "")
micliente = Left(cli, InStr(1, cli, " ") - 1)
Set poSendMail = New clsSendMail

miasunto = Nz(DLookup("[asunto]", "formatos_email", "[Id]=" & miformato & ""), "")
micabecera = Nz(DLookup("[cabecera]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo1 = Nz(DLookup("[cuerpo1]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo2 = Nz(DLookup("[cuerpo2]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo3 = Nz(DLookup("[cuerpo3]", "formatos_email", "[Id]=" & miformato & ""), "")
midespedida = Nz(DLookup("[despedida]", "formatos_email", "[Id]=" & miformato & ""), "")
mifirma = Nz(DLookup("[firma]", "formatos_email", "[Id]=" & miformato & ""), "")

mensage_HTML = "<p>" & micabecera & " " & micliente & ": </p><p> </p><p> micuerpo1</p>" & "<p>" & micuerpo2 & "</p>" & "<p>" & micuerpo3 & "</p>" & "<p>" & midespedida & "</p>" & "<p>" & mifirma & "</p>"

'este codigo fue sacado de la web de Don Emilio Sancha
    With poSendMail
        .SMTPHostValidation = 0
        .EmailAddressValidation = 1
        .Delimiter = ";"
        .SMTPHost = "cuenta correo/servidor correo"
        .from =  "cuenta correo/servidor correo"
        .FromDisplayName = "Servicio de control de toner"
        .Recipient =  "cuenta correo/servidor correo"
        .AsHTML = True
        .Priority = 3
        .Subject = miasunto
        .Message = mensage_HTML
   
   '.Attachment = Nz(Me.txtAdjuntos, "")         ' opcional
   '.Receipt = Me.chkAcuseRecibo
        .UseAuthentication = True            ' Optional, default = FALSE
        .UsePopAuthentication = False           ' Optional, default = FALSE
        .UserName =  "cuenta correo/servidor correo"                ' Optional, default = Null String
        .password = "password"                     ' Optional, default = Null String, value is NOT saved
        .POP3Host = " "cuenta correo/servidor correo""
        .MaxRecipients = 100                       ' Optional, default = 100, recipient count before error is raised
        .Send
    End With ' poSendMail

    End If
    Rs.MoveNext
    Loop
    End If
    Rs.Close

como siempre las gracias por adelantado


Editado por 01loko - 17/Enero/2018 a las 21:16
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 04:41
Esta claro, el error esta en la linea:

micliente = Left(cli, InStr(1, cli, " ") - 1)

la cual, extrae del nombre completo, solo el nombre desechando los apellidos, pero no veo donde esta el error.

si pongo :

micliente = Left (cli,4)

funciona perfectamente, luego el problema esta en la busqueda del primer espacio.


Alguna idea?
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 07:08
Hola,
A lo mejor porque solo existe una palabra en esa string, intenta :

If Not Nz(InStr(1, cli, " ")) = 0 Then
  miCliente = Left(cli, InStr(1, cli, " ") - 1)
Else
  miCliente = cli
End If
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 20:07
Una vez probado, he de decir que no.
miCliente = Left(cli, InStr(1, cli, " ") - 1)
El error lo da en el momento que esta instruccion busca el " "  espacio en blanco para dar la longitud, lo que no encuentro es el motivo
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1172
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 20:16
Esa variable cli, ¿dónde y cómo está dimensionada?
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 11383
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 20:17
Supongamos que la variable cli no tiene ningún blanco,
- luego InStr(1, cli, " ") = 0
- a ese valor le restas 1
- con lo que te queda:
    Micliente = Left(cli, -1)

Lo raro es que Access no te fustigue con un calambrazo cuando pulses el INTRO ..... LOL
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 20:52
si mirais el codigo del primer mensaje, cli = nombre y apellido de una persona, del que quiero sacar el nombre en este caso Juan Perez Perez.








Postdata: me dice el foro que tengo 4 hilos abierto, creo que solo tengo dos (de ayer) ¿alguien lo puede mirar?


Editado por 01loko - 18/Enero/2018 a las 20:59
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1172
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 20:58
Esta línea ya la he visto:

cli = Rs!NOMBRE

A lo que me refiero, es a que no veo algo como:

Dim cli As String

Con lo que no sé si no la tienes dimensionada, o si está dimensionada en otro sitio, o está dimensionada como pública o, sobre todo, de que tipo es. No sea que ese tipo permita usar el Left, pero no el InStr.

Y cpampasPT y Mihura tienen razón: o controlas la falta del espacio, u obtendrás otro error cuando no exista y pases longitud -1 al Left.


Editado por pitxiku - 18/Enero/2018 a las 20:59
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 21:20
Tienes razon, olvide dimensionarla.

Acabo de probar con ella dimensionada con 'Dim cli as string', pero sigue dando el error de memoria.
He cambiado el codigo simplificandolo:(pero sigue dando error)


Dim miasunto As String, micabecera As String, micuerpo1 As String, micuerpo2 As String, cli As String
Dim micuerpo3 As String, midespedida As String, mifirma As String, mensage_HTML As String, micliente As String
Dim miformato, micuenta, micuentac As String, mismtp As String, micontraseña As String, minombrecuenta As String
miformato = Me.formato

micuenta = Me.eligecuenta
mismtp = Nz(DLookup("[s_smtp]", "cuenta_email", "[Id]=" & micuenta & ""), "")
micuentac = Nz(DLookup("[cuenta_correo]", "cuenta_email", "[Id]=" & micuenta & ""), "")
micontraseña = Nz(DLookup("[contraseña]", "cuenta_email", "[Id]=" & micuenta & ""), "")
minombrecuenta = Nz(DLookup("[nombre]", "cuenta_email", "[Id]=" & micuenta & ""), "")
miempresa = Nz(DLookup("[empresa]", "constantes", "[Id]=1"), "")



cli = "JUAN PEREZ PEREZ"  'Rs!NOMBRE

Dim prueba As String
prueba = InStr(1, cli, " ")
micliente = Left(cli, prueba - 1)

GoTo fin

Set poSendMail = New clsSendMail

miasunto = Nz(DLookup("[asunto]", "formatos_email", "[Id]=" & miformato & ""), "")
micabecera = Nz(DLookup("[cabecera]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo1 = Nz(DLookup("[html]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo2 = Nz(DLookup("[cuerpo2]", "formatos_email", "[Id]=" & miformato & ""), "")
micuerpo3 = Nz(DLookup("[cuerpo3]", "formatos_email", "[Id]=" & miformato & ""), "")
midespedida = Nz(DLookup("[despedida]", "formatos_email", "[Id]=" & miformato & ""), "")
mifirma = Nz(DLookup("[firma]", "formatos_email", "[Id]=" & miformato & ""), "")




mensage_HTML = "<p>" & micabecera & " " & micliente & ": </p><br>" & micuerpo1 & "<br><p>" & midespedida & "</p><br><br>" & "<p>" & mifirma & "</p>"

'este codigo fue sacado de la web de Don Emilio Sancha
    With poSendMail
        .SMTPHostValidation = 0
        .EmailAddressValidation = 1
        .Delimiter = ";"
        .SMTPHost = mismtp
        .from = micuentac
        .FromDisplayName = miempresa
        .Recipient = Rs!email
        .AsHTML = True
        .Priority = 3
        .Subject = miasunto
        .Message = mensage_HTML
  
   '.Attachment = Nz(Me.txtAdjuntos, "")         ' opcional
   '.Receipt = Me.chkAcuseRecibo
        .UseAuthentication = True            ' Optional, default = FALSE
        .UsePopAuthentication = False           ' Optional, default = FALSE
        .UserName = micuentac                   ' Optional, default = Null String
        .password = micontraseña                     ' Optional, default = Null String, value is NOT saved
        .POP3Host = ""
        .MaxRecipients = 100                       ' Optional, default = 100, recipient count before error is raised
        .Send
    End With ' poSendMail
fin:
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 18/Enero/2018 a las 21:26
Por cierto, para solucionar esto y la posible falta de espacios en blanco, he creado dos campos diferentes, nombre  y apellidos por otro, lo que quiero saber que es lo que falla, ya que me veo otra vez con el mismo error si no aprendo a corregirlo.

Recordar de que soy nuevo y estoy aprendiendo.
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 19/Enero/2018 a las 08:01
A mi esto me funciona :

dim cli as string
cli = "JUAN PEREZ PEREZ"  'Rs!NOMBRE

Dim prueba As String
prueba = InStr(1, cli, " ")
miCliente = Left(cli, prueba - 1)
Debug.Print miCliente   ' aqui me imprime JUAN


Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 19/Enero/2018 a las 13:37
Vale: confirmado

He probado el codigo en otro ordenador y funciona.

Voy a estudiar que es lo que falla.

por mi se puede cerrar este hilo (Salvo que querais esperar a ver la solucion final).

Gracias a todos por el esfuerzo.
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 603
Enlace directo a este mensaje Enviado: 23/Enero/2018 a las 19:29
No soy capaz de encontrar por que me da error en el ordenador portatil y en el fijo no

pero se que es cosa del ordenador

este hilo se puede cerrar, muchas gracias a todos
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable