** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - Envio Email con destinatario variable
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEnvio Email con destinatario variable

 Responder Responder
Autor
Mensaje
emoreira Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 30/Marzo/2008
Localización: Argentina
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Tema: Envio Email con destinatario variable
    Enviado: 10/Junio/2011 a las 02:47
Buenas. Les expongo mi consulta luego de haber buscado las respuesta sin suerte(si busqué mal van mis más sinceras disculpas).
Tengo una tabla con los los campos que detallo y deseo que al ejecutar una consulta de selecc. se envíen emails a destinatarios que estan relacionados con la misma
Nombres de campos y formatos:
Fecha(fecha); Pasajero(Texto); Autorizante(Texto); Origen(Texto);Destino(Texto);Importe(Número); ETC.
Lo que deseo es que aplicar una consulta que filtre por rango de fechas y autorizantes que luego genere mediante macro envios de email(medianamente automaziado)con los resultados(objetos adjuntos del tipo imágen o excel en modo de tabla visible, no como documento adjunto)que se envién justamente a los "autorizantes"(levantando la dirección de otra tabla relacionada por ID_Autorizante, o bien de la misma).
Concretamente la BD contiene registro de viajes en taxis y remises de empleados de la empresa dónde trabajo y previo al pago de la factura debo enviar los emails a Gerentes o Jefes para la conformidad de los viajes(lo hago en forma manual y al tratarse de por lo menos 80 mails por cada liquidacion que se controla es sumamente engorroso)
Desde ya agradezco el tiempo que dediquen en darme una mano, pista o ayuda para poder lograr lo que he tratado de explicarles

Editado por emoreira - 10/Junio/2011 a las 03:00
Arriba
RUGALB Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 21/Julio/2006
Localización: Mexico
Estado: Sin conexión
Puntos: 386
Enlace directo a este mensaje Enviado: 10/Junio/2011 a las 06:15
hola emoreira
 
con mucho gusto te ayudamos! que tienes hecho ya?
salvo que yo no entiendo que es en modo de tabla visible no le veo mucho problema, en la consulta de selección muestra tambien la tabla de donde tengas las direcciones y ahí mismo relaciona por ID_Autorizante ya que tengamos eso solo es cuestión de hacer un Recordset a la consulta e ir guardando las direcciones en una variable, así como sus respectivos datos, para finalmente comoponer el correo... ahora que también no se que metodo quieras usar para mandarlo si Outlook o quizá CDO
 
cuestión de que expliques en que te "atoras"
 
Saludos cordiales
 
 
 
Saludos desde Toluca, Estado de Mexico "El pesimista se queja del viento, el optimista espera que cambie, el realista ajusta las velas"(William Ward)
Arriba
emoreira Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 30/Marzo/2008
Localización: Argentina
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 10/Junio/2011 a las 15:09
Gracias. Te respondo. "Como tabla visible" quise decir que se vea como una tabla incrustada en el correo, no como documento adjunto para descargar. Puede ser como tabla o como imágen, pero al abrir el correo en el cuerpo del mismod deberian verse las filas y columnas correspondientes a la consulta ejecutada. Con respecto a dónde me trabé.. En todo. Tengo la tabla con los datos puros, la trabajo en vista hoja de datos(corrigiendo posibles errores del archivo), una vez corregida la exporto a excel y voy filtrando, copiando y pegando manualmente los datos en nuevos correos. Es algo complicado hacer esto mes a mes con 4 empresas de viajes. se pierde un día limpio de trabajo o más. espero me hayas comprendido, sino con gusto te iré dando los detalles que necesiten para orientarme.
nuevamente, muchas gracias por tu colaboración.
Pd. El cliente de correo en mi trabajo es lotus notes Y respecto a tu comentario que mencionás una variable. Perdón por la ignorancia pero como no manejo código(me encantaría que mi emprese me pague un cursito) no comprendo del todo. Quizás si viese concretamente el ejemplo en otra bd podría llegar a entender algo más. Si estás de acuerdo luego zipeo una versión reducida de la BD que tengo hecha para que me comprendan algo más. O también puedo subir imágenes si es que el foro lo permite.


Editado por emoreira - 10/Junio/2011 a las 15:12
Arriba
OmniPresente Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Febrero/2009
Localización: España
Estado: Sin conexión
Puntos: 1870
Enlace directo a este mensaje Enviado: 10/Junio/2011 a las 15:42
Yo realizaría una exportación a HTML del resultado de tu consulta, y luego enviaría un mensaje vía CDO mediante el método CreateMHTMLBody .Pero hay que utilizar algo de código.
 
Saludos.
Arriba
RUGALB Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 21/Julio/2006
Localización: Mexico
Estado: Sin conexión
Puntos: 386
Enlace directo a este mensaje Enviado: 10/Junio/2011 a las 19:58
Hola de nuevo, una vez que has explicado claramente lo que quieres y tomado en cuenta que el cliente de correo es Lotus notes, al menos yo no se como Automatizar con él. (Mis clientes siempre han usado Outlook), pienso que lo que menciona Omnipresente es mejor opción, esperemos que sea tu solución. Sin embargo aqui esta un Link  en la página del Jefe:
 
y puedes averiguar más en el Foro Off-line buscando por "Lotus Notes" en asunto del mensaje y despues buscas en el cuerpo del mensaje
 
Saludos Cordiales 
Saludos desde Toluca, Estado de Mexico "El pesimista se queja del viento, el optimista espera que cambie, el realista ajusta las velas"(William Ward)
Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3114
Enlace directo a este mensaje Enviado: 10/Junio/2011 a las 20:19
Hola,

por mi experiencia con Lotus Notes, si no vas bien con el código, te aseguro que te va a resultar difícil enviar algo. Tal vez podrías arreglar la rutina que te señaló en ese enlace Rugalb para tus propósitos, aunque tal vez no es la más explicativo con Lotus Notes. Aquí tienes otro enlace con una rutina estandar utilizada con Lotus Notes

    https://www-304.ibm.com/support/docview.wss?uid=swg21178583&wv=1

Pero ya te adelanto que lo que pretendes de enviar en el cuerpo del mensaje una tabla copiada desde el portapapeles de windows es bastante complicado con Lotus Notes y visual basic.

Si quieres aventurarte, puedes intentar programar con LotusScript, Java o con el lenguaje de @formulas desde dentro de Lotus Notes. Estos lenguajes se utilizan de manera nativa dentro de Lotus Notes y tienen mucha más potencia que Visual Basic, el cual sólo puede acceder a Lotus un poco "de reojo". Desde Lotus Notes puedes mirar la parte para programar "Agentes" o "Agents" y desde ahí tal vez consigas mejores resultados.

Pero lo que pides, aunque parezca sencillo, es bastante complicado de conseguir en Lotus Notes. Si habláramos de Outlook, entonces sería muchísimo más sencillo, pero... Si además, comentas que no te mueves bien con la programación, entonces, en mi opinión creo que es mejor que lo intentes de otra manera.
Saludos,

Juan M. Afan de Ribera
Arriba
emoreira Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 30/Marzo/2008
Localización: Argentina
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 11/Junio/2011 a las 15:11
Estimado Experto: Viendo lo dificultoso del caso para cliente LN, Voy por la opción de Outlook, que es el cliente que utilizo en mi casa. Tal vez dejando la bd operativa y funcionando bajo este último cliente pueda llevar el proyecto al trabajo y la gente de IBM(son ellos quién nos hacen el soporte OnSite)pueda modificar la BD o programar mi notes. Así que les reformulo la inquietud para armar la base que envíe mail por Outlook. Consulta. Hay que cerrar este topic y debo abrir uno nuevo?
Ante todo, millón y medio de gracias por sus aportes.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18819
Enlace directo a este mensaje Enviado: 11/Junio/2011 a las 16:14
Hola!
 
Realmente no necesitas utilizar Outlook ni Notes, ni dada, Windows permite envíar emails sin utilizar ningún cliente de correo, en mi web encontrarás varios ejemplos de envío de correo mediante CDO.
 
Si aún sigues queriendo enviarlo mediante Outlook, puedes utilizar el siguiente pricedimiento:
 
'*******************************************************************************
'* EnviarMensajeMail
'* Manda, mediante Outlook, un email con el asunto y mensaje indicados, a los
'* destinatarios pasados como parámetros.
'* en Outlook XP o superior, este pedirá autorización para realizar el envío,
'* en el caso de Outlook 2007, utilizando el complemento Outlook Connector
'* se evita la solicitud de permiso
'* Todos los parámetros del mismo tipo iran separados por punto y coma, dentro
'* de las mismas comillas
'* Argumentos: strAsunto      => Asunto del mensaje
'*             strMensaje     => Cuerpo del mensaje
'*             strPara        => Destinatario/s
'*             strCC          => (opcional) Destinatario/s c/copia
'*             strCCO         => (opcional) Destinatario/s c/copia oculta
'*             Adjunto        => (opcional) Ruta del/de los Adjunto/s
'*             bytImportancia => Importancia alta: 2, Normal: 1, Baja: 0
'* uso: EnviarMensajeMail "Prueba", "Esto es una prueba, probando, 1, 2","destinatario1@pp.com","DestinatarioCopia1@pp.com; DestinatarioCopia2@pp.com","DestinatarioCopiaOculta1@pp.com","C:\Temp\Arriba.ico"
'* http://www.mvp-access.es/emilio/
'* Si utilizas este código, respeta la autoría y los créditos
'* ESH 15/07/05 18:28
'* ESH 06/09/05 19:50 Incluyo parámetro CCO
'* ESH 08/02/09 13:15 repaso general
'*******************************************************************************
Sub EnviarMensajeMail(ByVal strAsunto As String, ByVal strMensaje As String, ByVal strPara As String, Optional ByVal strCC As String, Optional ByVal strCCO As String, Optional strAdjuntos As String, Optional bytImportancia As Byte = 1)
Dim olApp As Object           ' Outlook.Application
Dim olMensaje As Object       ' Outlook.MailItem
Dim olDestinatario As Object  ' Outlook.Recipient
Dim olAdjunto As Object       ' Outlook.Attachment
Dim Matriz() As String, _
    i As Long, _
    strError As String
Const olTo As Long = 1, _
      olCC As Long = 2, _
      olBCC As Long = 3

' abro Outlook
On Error GoTo EnviarMensajeMail_TratamientoErrores
Set olApp = CreateObject("Outlook.Application")
' cro un mensaje
Set olMensaje = olApp.CreateItem(0)
With olMensaje
   ' añado los destinatarios
   If Not Trim$(strPara) = vbNullString Then
      Matriz() = Split(strPara, ";")
      For i = 0 To UBound(Matriz)
         Set olDestinatario = .Recipients.Add(Matriz(i))
         olDestinatario.Type = olTo
      Next
   Else
      MsgBox "No hay ningún destinatario", vbInformation + vbOKOnly, "ATENCION"
      GoTo EnviarMensajeMail_Salir
   End If
   If Not Trim$(strCC) = vbNullString Then
      Matriz() = Split(strCC, ";")
      For i = 0 To UBound(Matriz)
         Set olDestinatario = .Recipients.Add(Matriz(i))
         olDestinatario.Type = olCC
      Next
   End If
   If Not Trim$(strCCO) = vbNullString Then
      Matriz() = Split(strCCO, ";")
      For i = 0 To UBound(Matriz)
         Set olDestinatario = .Recipients.Add(Matriz(i))
         olDestinatario.Type = olBCC
      Next
   End If
   ' aplico el asunto, el mensaje y la importancia del mensaje
   .Subject = strAsunto
   .Body = strMensaje
   .Importance = bytImportancia
  
   ' añado los adjuntos si los hubiera
   If Not Trim$(strAdjuntos) = vbNullString Then
      Matriz() = Split(strAdjuntos, ";")
      For i = 0 To UBound(Matriz)
         Set olAdjunto = .Attachments.Add(Matriz(i))
      Next
   End If
   ' verifico la validez de los destinatarios
   For Each olDestinatario In .Recipients
      olDestinatario.Resolve
      If Not olDestinatario.Resolved Then
         strError = strError & Chr$(34) & olDestinatario & Chr$(34) & ", "
      End If
   Next
   If Len(strError) > 0 Then
      MsgBox "Los siguientes destinatarios no son correctos" & vbNewLine & Left$(strError, Len(strError) - 2), vbCritical + vbOKOnly, "ATENCION"
      .Display   ' muestro el mensaje para dar opción a rectificar el error
      GoTo EnviarMensajeMail_Salir
   End If
   ' envío el mensaje
   .Send
End With

EnviarMensajeMail_Salir:
   ' cierro objetos
   Set olMensaje = Nothing
   Set olApp = Nothing
   On Error GoTo 0
   Exit Sub
EnviarMensajeMail_TratamientoErrores:
   MsgBox "Error " & Err.Number & " en proc.: EnviarMensajeMail de Módulo: Módulo1 (" & Err.Description & ")"
   Resume EnviarMensajeMail_Salir
Resume Next
End Sub            ' EnviarMensajeMail
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3078
Enlace directo a este mensaje Enviado: 11/Junio/2011 a las 18:32
Hola. De que tienes que meter código puedes estar seguro.
Ahora, no estoy de acuerdo con que sea difícil enviar tablas (si sabes hacerlo, claro Wink) en el cuerpo del correo.
En el hilo http://www.mvp-access.com/foro/forum_posts.asp?TID=66102 colgué un ejemplo que crea dinámicamente una tabla HTML a partir de un recordset.

Tu solución puede estar que en vez de escribir la tabla en un archivo externo como está en mi ejemplo, metas en una variable la tabla que se crea y envías esta variable en el cuerpo del correo (utilizando CDO- busca en el foro al respecto : CDO).
De esta manera envío recibos de condominio a una lista de destinatarios, y cada recibo es diferente.
https://tucondominioaldia.net
Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3114
Enlace directo a este mensaje Enviado: 11/Junio/2011 a las 19:47
A todo esto una pregunta ¿Alguien ha comprobado que se pueda enviar correo con CDO en un sistema que utilice Lotus Notes, con sus servidores Domino y todo eso?

En el último año he tenido que implementar en varias ocasiones rutinas de envío de correo masivo desde un sistema que utiliza Lotus Notes como servidor de correo. A veces, las cosas más sencillas simplemente no las puedes hacer con Lotus Notes (enviar HTML en el cuerpo del mensaje, imágenes, adjuntar una firma de correo, encriptación, etc etc)
Saludos,

Juan M. Afan de Ribera
Arriba
xgargallo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2011
Localización: España
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 26/Julio/2011 a las 12:57
BUenos días
 
Estoy en la misms problematica, intento copiar este código y me es imposible, lo coloca todo en una linea.
 
Como lo copio?
 
Saludos
Xavier
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3078
Enlace directo a este mensaje Enviado: 26/Julio/2011 a las 15:42
Un método que me sirvió por varios años, fué el de exportar el reporte a HTML; abrirlo, copiar su contenido; pegar este contenido en el body(CDO).

1)ABre un reporte oculto
                DoCmd.OpenReport stDocName, acViewPreview, , , acHidden

2)Lo exportas a formato HTML:
archivo = "c:\siscond\adjuntos\webtemp.HTML"
 DoCmd.OutputTo acOutputReport, stDocName, acFormatHTML, archivo, False
3)Lo abres y copias el contenido HTML:
                NúmeroArchivo = FreeFile
                Set fs = CreateObject("Scripting.FileSystemObject")
                Set f = fs.GetFile(archivo)
   
                Set ts = f.OpenAsTextStream(1, -2)
                s = ts.readall
                ts.Close
La variable s contiene todo el código html del archivo. La asignas al body del objeto CDO y en el cuerpo del correo se mostrará la tabla.
Si se trata de enviar muchos es un poco lento.

pd: en la parte superior del procedimiento o form, declara
Dim NúmeroArchivo
Dim fs, f, ts




Editado por guarracuco - 26/Julio/2011 a las 15:43
https://tucondominioaldia.net
Arriba
xgargallo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2011
Localización: España
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 27/Julio/2011 a las 08:13
Perdon, me referia a copiar el procedimiento de emilio y probarlo para no tener que picar tyodo el codigo
 
Xavier
Arriba
xgargallo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2011
Localización: España
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 28/Julio/2011 a las 12:11
Podeis cerrar, ya copié todo el código y ahora toca experimentar
 
Saludos
Nunca te acostaras sin haber aprendido una cosa mas
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable