[RESUELTO] Mails con Body y con Adjuntos

Discute sobre la aplicación de hojas de cálculo
Responder
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

[RESUELTO] Mails con Body y con Adjuntos

Mensaje por eltete »

En varios hilos de este foro se ha dado solución a montar mails con BODY pero sin adjuntos, y mails con adjuntos pero sin BODY

Mirando el hilo http://user.services.openoffice.org/es/ ... body#p8616 Mauricio comenta en él una forma de envío desde shell

oShell = createUnoService("com.sun.star.system.SystemShellExecute")

para posteriormente activar la orden mailto: oShell.Execute("mailto .....

Pensé en desarrollar la misma idea pero lanzando el Thunderbird

Para ello elaboré la línea de comando:

thunderbird.exe -compose to='juan@ejemplo.com,ana@ejemplo.es',cc='con_copia_para@otro.com',subject='Aquí el mensaje de Asunto',body='Aquí el BODY del mensaje',attachment='C:\p\PrimerDocumento,C:\k\Segundo documento',

Que lanzada desde Ejecutar funciona a la perfección (siempre que Thunderbird.exe esté accesible)

Colocada esta línea en una macro:

oShell.Execute("thunderbird.exe -compose to='juan@ejemplo.com,ana@ejemplo.es',cc='con_copia_para@otro.com',subject='Aquí el mensaje de Asunto',body='Aquí el BODY del mensaje',attachment='C:\p\PrimerDocumento,C:\k\Segundo documento',","",0)

Windows da un mensaje de error
Error.gif
He probado oShell.Execute("thunderbird.exe ","",0) y arranca perfectamente Thunderbird, pero a partir de aquí ya no consigo que acepte nada sin sacar el error

Otra cosa sorprendente, para mi, es que la línea:
thunderbird.exe -compose to='juan@ejemplo.com,ana@ejemplo.es',cc='con_copia_para@otro.com',subject='Aquí el mensaje de Asunto',body='Aquí el BODY del mensaje',attachment='C:\p\PrimerDocumento,C:\k\Segundo documento' (es como la primera pero sin la coma final) funciona perfectamente desde Ejecutar, pero cuando la coloco entrecomillada en la macro no me la acepta (es decir, el texto no lo coloca en rojo sino en marrón)

Por lo que he podido comprobar, cuando desde oShell.Execute se invoca el programa, sea el que sea, funciona bien (es decir, lo abre) pero en cuanto se le coloca al lado el fichero, o la variante, que ha de ejecutar, ya no interpreta bien el comando.
Por ejemplo oShell.Execute("Winword","",0) abre Word sin problemas, pero si le añadimos el nombre del documento que ha de abrir deja de reconocer la orden:
oShell.Execute("Winword documento.doc","",0) no lo reconoce

Agradezco de antemano vuestra atención
Última edición por eltete el Vie Ago 29, 2014 8:51 am, editado 2 veces en total.
Win XP SP3 OpenOffice 3.2.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Siguiendo con la misma cuestión he encontrado en:
http://ooo.developpez.com/faq/?page=Interaction
una macro:

Código: Seleccionar todo

Sub EnvoiMail_Outlook( ) 
   Dim oObj As Object , AppOutlook As Object
   Dim oMail As Object
       
   oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") 
   AppOutlook = oObj.createInstance("Outlook.Application") 

  oMail = AppOutlook.CreateItem(0) 
  
  With oMail
    .To = "destinataire@mail.fr" 
    .Subject = "Rapport mensuel " & Date
    .Body = "Bonjour," & Chr(10) & _
       "Je vous souhaite une bonne lecture." & Chr(10) & Chr(10) & _
       "Cordialement" & Chr(10) & _
       Environ("username") & Chr(10) & Chr(10) 
    .Attachments.Add("C:\Fichier test.ods")
    .send 
  End With
  
End Sub
que funciona a la perfección con Outlook.
¿Podríais indicarme como adaptarla a Thunderbird?
He probado con cambiar Outlook por Thunder o Thunderbird, y como era de esperar, no sirve

Muchas gracias
Win XP SP3 OpenOffice 3.2.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

He encontrado qué es lo que hacía mal en lo expuesto en el primer mensaje.

Está documentado en http://msdn.microsoft.com/en-us/library/ms723232
es decir, la orden debe implementarse así:

oShell.Execute("Thunderbird.exe"," -compose to='juan@ejemplo.com,ana@ejemplo.es',cc='con_copia_para@otro.com',subject='Aquí el mensaje de Asunto',body='Aquí el BODY del mensaje',attachment='C:\p\PrimerDocumento,C:\k\Segundo documento' ","",0)

De esta manera funciona correctamente

Ahora sólo me falta saber como conseguir que el mensaje lo envíe automáticamente, sin obligarme a clicar sobre enviar

Poco a poco
Win XP SP3 OpenOffice 3.2.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Buscando es este foro y, gracias al libro de Mauricio, he logrado hacer una macro para enviar correo utilizando el cliente de correo Thunderbird. Utilizo el código que ha expuesto anteriormente eltete. El problema es que, por más que he buscado, no encuentro la forma de enviar automáticamente el correo sin necesidad de hacer clic en "enviar" en cada correo.
¿Alguién sabe si se puede hacer por código? y, si es así, ¿cómo?...
Gracias de antemano.
OpenOffice 4.1.0 en Windows 8.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Me faltó exponer en el mensaje anterior que tengo Windows 7 de 32 bits como sistema operativo y la versión de OpenOffice es la 4.1.0. La versión Thunderbird es v.31.0, released: July 22, 2014.

A propósito he probado con el siguiente procedimiento:

Código: Seleccionar todo

MailClient=MailAgent.querySimpleMailClient()
MailMessage=MailClient.createSimpleMailMessage()
MailMessage.setRecipient(MailAddress)
Pero, en la segunda línea, MailMessage=MailClient.createSimpleMailMessage() me da el siguiente error: la variable de objeto no está establecida.

Con este otro:

Código: Seleccionar todo

eMailer = createUnoService( "com.sun.star.system.SystemMailProvider" )
eMailClient = eMailer.queryMailClient  
eMailMessage = eMailClient.createMailMessage()
eMailMessage.Recipient = "xxxx@gmail.com"
eMailMessage.Subject = "Esto es una prueba"
eMailMessage.Body = "Para poner en el cuerpo del correo"
eMailClient.sendMailMessage(eMailMessage,1)
Me funciona bien pero no puedo adjuntar un archivo. He probado con eMailMessage.Attachment("ruta y nombre del archivo") pero no lo acepta.
Además, si en la última línea pongo un 0 como parámetro, me sale el programa Thunderbird con el correo preparado para hacer clic en enviar y si pongo 1 me envía
directamente el mensaje pero antes me sale una ventana del propio correo avisándome si doy permiso para enviarlo. O sea, que también tengo que hacer clic en esa ventana.
Son muchos correos los que tengo que enviar por eso estoy mirando si hay alguna posibilidad de enviar directamente sin hacer clic en enviar en el programa de correo.
Con MsOutlook tengo un procedimiento que sí funciona sin problemas pero con Thunderbird no doy con la solución.
Muchas gracias de antemano a tod@s
OpenOffice 4.1.0 en Windows 8.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Mirando en distintos foros de openoffice en otros idiomas he conseguido, por fin, que me funcione una macro que abre el cliente predeterminado de correo del ordenador (me funciona con Outlook y Thunderbird) con sistema operativo Windows 7 y 8 y envía un correo con archivo adjunto sin ventana previa ni nada, es decir, directamente. En este caso el archivo adjunto es un PDF pero cambiando el tipo de adjunto en su correspondiente variable se pueden enviar también adjuntos en formato Zip.
Tengo que poner los datos del servidor, los datos de la cuenta desde dónde voy a enviar el correo (es decir, dirección de correo, contraseña y usuario) y, por supuesto, la Url del archivo adjunto así como las direcciones de los destinatarios con copia y con copia oculta.
Aquí les pasó el código por si alguien necesita algo de esto. No soy muy entendido en lenguaje de programación por lo que algunas funciones que aparecen no sé muy bien su cometido. Seguro que hay personas más preparadas que podrían explicarlas.
El código es el siguiente:

Código: Seleccionar todo

'Option Explicit 
' ======= just for testing ======= 
Private emailCC As String
Private emailBCC As String
Private testRecipient() As String
Private Destinatario As String
Private Body As String
Private emailCCs()As String
Private emailBCCs() As String

' ======== Aquí van tus detalles ======== 
const myAddress = "xxxxxxxx@xxxxxx.com" 'la dirección de correo desde donde vas a enviar el correo
const smtpServer = "xxxxx.xxxx.xxx"   'tu servidor
const smtpPort = 25                                                           'el puerto de tu servidor
const smtpSecure = false 'true       ' true si es seguro 
const smtpUser = "xxxxxxxx"  'el usuario de tu cuenta, normalmente lo que va a la izquierda de la dirección de correo
'El tamaño del archivo adjunto pero no sé en qué unidad está.
const attachmentMaxSize = 100000 

' Estas variables para las funciones de listener (detectores) , que no se pueden pasar como argumentos 
private smtpPassword as String 
private messageBody as String 
private attachmentContents as Object 
private attachmentType as String

'Este es el procedimiento que usa el procedimiento sendmail() que está más abajo
sub EnvioMailConAdjunto() 

'Si quieres que te avise antes de enviar el correo para no enviarlo por error.
'If Msgbox ("¿Quiere enviar el correo? ", 33, "ENVÍO DE CORREO") = 2 Then 
'Exit Sub
'End If
'la dirección a la que vas enviar el correo. Si son varias las separas con ;
Destinatario = "xxxxxxx@xxxxxxxx.xxx"
'Aquí la dirección o direcciones a los que envías con copia. En este caso serían dos separadas por ;
'emailCC = "xxxxxxx@xxxxx.xxx;xxxxxx@xxxxxxx.xxx"
'Si quieres enviar con copia oculta es como sigue
emailBCC = "xxxxxxx@xxxx.xxx;xxxxx@xxxxx.xxx"
'En esta variable pones el cuerpo del correo
Body = "Esto es una prueba"

      If Destinatario Like "*@*.*" Then 
        testRecipient = Split(Destinatario, ";")
        smtpPassword = "xxxxxxxxxxx"                                                  'AQUÍ VA EL PASSWORD DE LA CUENTA DE CORREO
        attachmentType = "application/pdf"                          'aquí el tipo de archivo. Si es Pdf tienes que poner tal cual está.
        'Y se envía usando el procedimiento sendMail()
        sendMail(testRecipient(0), "Prueba de correo con adjunto", Body, _ 
        ConvertToUrl("C:\Users\xxxx\Desktop\NombreArchivo.pdf"))        'esta es la url del archivo adjunto
      'Esta línea de abajo es por si lo quieres enviar sin adjunto  
      'sendMail(testRecipient(0), "Prueba de correo sin archivo adjunto", "Para probar sin adjunto")
    Else
       'Si se te olvida poner el destinatario te avisa
       MsgBox "Error en el Destinatario o no existe"
    End if
        ' Y si llega hasta aquí es que todo ha ido bien y te lo dice
    	msgbox "El correo se ha enviado con éxito",,"ENVÍO DE CORREO"
      
end sub 

 

sub sendMail(recipient, subject, body, Optional attachmentUrl) 
dim bodyObject as Object, attachment as Object, message as Object, _ 
   serviceProvider as Object, service as Object, server as Object, mailUser as Object 

  'Se declaran servicios que son necesarios
   bodyObject = CreateUNOListener("body_", "com.sun.star.datatransfer.XTransferable") 
   messageBody = body 

   if not IsMissing(attachmentUrl) then _ 
      if attachmentFromUrl(attachment, attachmentUrl) <> "OK" then : exit sub 
   end if 
   
   message = com.sun.star.mail.MailMessage.createWithAttachment(_ 
      recipient, myAddress, subject, bodyObject, attachment) 
   
   serviceProvider = CreateUNOService("com.sun.star.mail.MailServiceProvider") 
   service = serviceProvider.Create("com.sun.star.mail.SMTP") 
   server = CreateUNOListener("smtp_", "com.sun.star.uno.XCurrentContext") 
   mailUser = CreateUNOListener("user_", "com.sun.star.mail.XAuthenticator") 
  
   'Por si son varias las direcciones con esto conseguimos rellenar una matriz con sus elementos separados por coma que reemplaza al ;
   If InStr(Destinatario, ";") Then 
      For i = 1 To Ubound(testRecipient)
        message.addRecipient(testRecipient(i))
      Next i
    End if  
   
   'Lo mismo si hay varias direcciones se rellena la matriz y se indica con el atributo addCcRecipient de Message
   If emailCC Like "*@*.*" Then 
      If InStr(emailCC, ";") Then 
         emailCCs = Split(emailCC, ";") 
        For n = 0 To Ubound(emailCCs)
         message.addCcRecipient(emailCCs(n))
        Next n
      Else
         message.addCcRecipient(emailCC)
      End if
   End if  
   'Igual para la dirección o direcciones con copia oculta    
   If emailBCC Like "*@*.*" Then 
      If InStr(emailBCC, ";") Then 
         emailBCCs = Split(emailBCC, ";") 
        For n = 0 To Ubound(emailBCCs)
         message.addBccRecipient(emailBCCs(n))
        Next n
      Else
         message.addBccRecipient(emailBCC)
      End if
   End if  
   'conectamos el servicio, enviamos el correo y nos desconectamos.   
   service.Connect(server, mailUser) 
   service.SendMailMessage(message) 
   service.Disconnect() 

end sub 
'Y a partir de aquí todas las funciones necesarias que las pillé de un foro en inglés.

' ======= extract attachment data from file ======== 
function attachmentFromUrl(attachment, url) 
dim chunks() as String, fileName as String, fileService as Object, _ 
   attachmentFile as Object, fileContents() as Byte 
    
   chunks() = Split(url, "/") 
   fileName = ConvertFromUrl(chunks(UBound(chunks())) 

   fileService = createUnoService("com.sun.star.ucb.SimpleFileAccess") 
   attachmentFile = fileService.OpenFileRead(url) 
   attachmentFile.ReadBytes(fileContents(), attachmentMaxSize + 1) 
   attachmentFile.CloseInput 

   if (UBound(fileContents()) + 1 > attachmentMaxSize) then 
      msgBox "Attachment file '" & fileName & "' is too big" 
      exit function 
   elseIf (UBound(fileContents()) < 0) then 
      msgBox "Attachment file '" & fileName & "' is empty" 
      exit function 
   end if 

   attachmentContents = CreateUnoValue( "[]byte", fileContents()) 
   attachment = CreateObject("com.sun.star.mail.MailAttachment") 
   attachment.Data = CreateUNOListener("attachment_", "com.sun.star.datatransfer.XTransferable") 
   attachment.ReadableName = fileName 

   attachmentFromUrl = "OK" 
end function 

' ===== server properties ===== 
function smtp_GetValueByName(what) 
   select case what 
      case "ServerName" 
         smtp_GetValueByName = smtpServer 
      case "Port" 
         smtp_GetValueByName = smtpPort 
      case "ConnectionType" 
         if smtpSecure then 
            smtp_GetValueByName = "SSL" 
         else 
            smtp_GetValueByName = "Insecure" 
         endif 
   end select 
end function 

' ====== email user methods ======= 
function user_GetUserName() 
   user_GetUserName = smtpUser 
end function 

function user_GetPassword() 
   user_GetPassword = smtpPassword 
end function 


' ====== message body object methods ====== 
function body_GetTransferDataFlavors() 
   dim flavor as new com.sun.star.datatransfer.DataFlavor 
   flavor.MimeType = "text/plain;charset=utf-16" 
   flavor.HumanPresentableName = "Unicode text" 
   body_getTransferDataFlavors = Array(flavor) 
end function 

function body_GetTransferData(flavor) as any 
   if (flavor.MimeType = "text/plain;charset=utf-16") then 
      body_GetTransferData = messageBody 
   end if 
end function 

function body_isDataFlavorSupported(x as Object) 
   body_isDataFlavorSupported = (x.MimeType = "text/plain;charset=utf-16") 
end function 

' ====== attachment object methods ====== 
function attachment_GetTransferDataFlavors() 
   dim flavor as new com.sun.star.datatransfer.DataFlavor 
   flavor.MimeType = attachmentType 
   flavor.HumanPresentableName = attachmentType 
   attachment_getTransferDataFlavors = Array(flavor) 
end function 

function attachment_GetTransferData(flavor) as any 
   if (flavor.MimeType = attachmentType) then 
      attachment_GetTransferData = attachmentContents 
   end if 
end function 

function attachment_isDataFlavorSupported(x as Object) 
   attachment_isDataFlavorSupported = (x.MimeType = attachmentType) 
end function 
Por alguna razón que desconozco, sólo me funciona si quito "Option Explicit" porque si lo escribo, en la función para la matriz de la copia emailCCs me dice que la variable no está definida. Por supuesto he probado a declararla dentro del procedimiento y nada me sigue indicando lo mismo. En fin, si le quito Option Explicit me funciona perfectamente.
Sólo me queda darles las gracias a todas las personas de "esos mundos" que me han ayudado a solucionar este problema y espero que a alguien le sea útil.
A propósito no sé si hay que dar por resuelto este tema o no porque no lo abrí yo.
OpenOffice 4.1.0 en Windows 8.1
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Mails con Body y con Adjuntos

Mensaje por SLV-es »

Agradecemos que hayas publicado la solución que has encontrado.

No puedes marcar el tema como Resuelto ya que quien lo abrió fué eltete, pero si lo consideras más adecuado, podemos separar tu parte del tema para que lo dés por resuelto.

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Mails con Body y con Adjuntos

Mensaje por mauricio »

pero... una cosa es a abrir el cliente de correo y otra cosa es enviar un correo directamente...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Muchas gracias por tu respuesta SLV.

Con respecto a tu sugerencia, es la primera vez que participo de manera activa en el foro y encima, no tengo mucho conocimiento en programación, por no decir casi ninguno. Lo que he aprendido se lo debo al libro de Mauricio, cuya ayuda ha sido inestimable y al que no me cansaré de agradecer su generosidad, y a la intervención de los foreros tanto en las preguntas como en las respuestas a los que agradezco también su participación en el foro. Pero me tiene intrigado el por qué me da el error "variable no definida" en la variable emailCCs si le escribo "Option Explicit" para forzar la definición de cada variable. Estoy estudiando esto y, por el momento, preferiría dejarlo abierto por si alguien que sea un experto o más experto que yo conoce la solución y la quiere publicar. Si crees que es mejor ponerlo en un tema nuevo por mí de acuerdo. Lo que consideres que es mejor para el foro.

Mil perdones por lo de la pregunta de si podía dar el tema como resuelto cuando yo no había abierto el tema, no estuve muy afortunado ahí... Pagué la novatada.

Con respecto a lo expuesto por Mauricio, disculpa por el error que cometí también en mi intervención. No abre el cliente de correo, lo que hace es enviar el correo directamente. ¡Qué torpeza la mía! Gracias a tu indicación he caído en la cuenta de por qué no se veían los correos en la carpeta de "Elementos enviados" del cliente de correo. Como son muchos los correos que tengo que enviar lo he resuelto con una de mis "chapuzas" y es poniendo en "Destinatario" la misma cuenta desde la que envío el correo con lo cual me aseguro de que se han enviado todos los correos. Además tengo la cuenta configurada para que me verifique la entrega, por lo que. si hay alguna dirección con error o inexistente o algún correo con over quota me avisa. En mi caso, las direcciones a las que envío las pongo todas en copia oculta.

Reitero mi agracedimiento y pido disculpas por los errores y molestias que haya podido ocasionar.

Un feliz fin de semana a tod@s
OpenOffice 4.1.0 en Windows 8.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Hola compañeros:

En realidad, originalmente intentaba generar un programa como el que has editado, es decir que enviase directamente los correos sin necesidad de un gestor de correo, pero como no logré hacer uno con body y adjuntos simultáneamente busqué, y encontré, uno que lo hiciese, aunque fuese a través de Outlook.
Posteriormente intenté hacerlo a través de Thunderbird para aprovechar que era gratuito, pero me quedé (y sigo) atascado.

Volviendo al código que has colocado, he intentado probarlo pero no consigo que funcione. Al cabo de unos segundos deja de responder (se cuelga)

He copiado tal cual el código que has colgado (salvo que he tenido que quitar los dos puntos que aparecen en la línea de if not IsMissing(attachmentUrl)
porque si los dejaba no reconocía las funciones

Probablemente el problema está en los datos del smtp que coloco:
myAddress = "midirección@gmail.com" '(es de gmail)
smtpServer = "smtp.gmail.com"
smtpPort = 465
smtpSecure = true
smtpUser = "midirección@gmail.com"

He puesto como smtpuser la dirección completa porque es lo que he leído por ahí (naturalmente he probado con sólo la parte de delante)

Seguiré probando
Win XP SP3 OpenOffice 3.2.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Hola eltete

Para enviar el correo directamente por una cuenta de Gmail yo pongo dos variables diferentes a las tuyas y me funciona bien sin quitar los dos puntos en "If not IsMissing(AttachmentUrl)". Recuerda que no puedes poner Option Explicit.

En smtpPort=25 (no me funciona ni con 465 ni con 993) y en smtpSecure=False. Si le pongo True en smtpSecure me sale una ventana con lo siguiente:
imagenOpenOffice.png
Espero que te funcione.

Saludos
OpenOffice 4.1.0 en Windows 8.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Con esos dos parámetros me sale el error
Adjuntos
Error en SMTP.jpg
Error en SMTP.jpg (21.51 KiB) Visto 41632 veces
Win XP SP3 OpenOffice 3.2.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Acabo de comprobar el código con mi cuenta de gmail utilizando el sistema operativo Windows 8 y, efectivamente, me sale un error. Pero no el mismo que te sale a ti, es el siguiente:
ErrorSMTP1.png

Sin embargo, con la cuenta que utilizo, que es una cuenta corporativa de mi trabajo, me funciona tanto con Window 7 como en Windows 8. Si utilizo mi cuenta de Gmail solo me funciona con Windows 7, utilizando los valores que te dije anteriormente.

Habrá que seguir investigando...
OpenOffice 4.1.0 en Windows 8.1
DaviDvD
Mensajes: 37
Registrado: Vie Oct 21, 2011 9:07 pm

Re: Mails con Body y con Adjuntos

Mensaje por DaviDvD »

Me he mirado el hilo por encima. Respecto a especificar el puerto de correo, pensad que el puerto 25 se suele utilizar para comunicaciones SMTP standard. No podéis especificar el puerto de un servidor al azar, la configuración del número de puerto utilizado debe ir acuerdo al tipo de cifrado/autentificación permitido por el servidor. Gmail tiene establecido que se oblige la comunicación cifrada de cara al envío de correos a través de ellos, solo permitiendo las comunicaciones por el puerto 25 en texto plano cuando son correos de entrada. De ahí que debáis configurarlo por el puerto 465, el cual se utiliza para connexiones SMTP a través de SSL. Pero puede que otro servidor no este preparado para enviar correos cifrados por el puerto 465.

Otro tema más simple es asegurarse de que tenéis conectividad a través de dicho puerto. Puede que con un servidor os funcione y con otro no simplemente por se conectan a puertos distintos, no sea que vuestro firewall solo permita la salida de un puerto u otro. Podéis aseguraros realizando conexiones con telnet, si responde el servidor es que vuestra connectividad está ok: telnet servidor puerto

Antes de enfrascaros con LibreOffice aseguraros cuales son los datos correctos de la conexión del servidor, no sea que ya los datos estén mal y penséis que es LibreOffice.

En tus datos de configuración de cuenta gmail cambiaría estas dos líneas:
smtpServer = "smtp.googlemail.com"
smtpSecure = "true"


¿No se puede especificar nada más?, ¿cuales son las opciones disponibles a poner en Libreoffice en smtpSecure?, ¿Como le pasas la contraseña?

¿Puedo echar un ojo a alguna de las hojas con la macro para enviar correo? Cambia la cuenta y contraseña antes de colgarla.


Un saludo,
David.
LibreOffice 4.0.6 | Linux Mint | Mate
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Aquí adjunto el libro que he utilizado para hacer las pruebas

Hay que completar la dirección de correo desde la que se envía y a la que se envía (yo he puesto la misma) y el password de la cuenta

Yo utilizaba un fichero pdf colocado en el Escritorio con el nombre de "Archivo.pdf" , hay que modificar la dirección en la que se localiza, yo he dejado puesta la que utilizo

Con Alt+F11 se abre el único módulo de macros que hay

El puerto 465 es el que tiene asignado Outlook para enviar correo saliente (y funciona correctamente)
Adjuntos
Mails con Body y adjuntos.ods
(11.63 KiB) Descargado 1484 veces
Win XP SP3 OpenOffice 3.2.1
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Acabo de probarlo en mi ordenador que tiene Windows 7 y con mi versión de OpenOffice que es la 4.1.0
Le puse mis datos de cuenta de gmail pero poniendo el valor 25 en la variable smtpPort y False en smtpSecure y me funciona perfectamente.
En smtpServer me funciona poniendo cualquiera de estas tres opciones:
"smtp.googlemail.com"
"imap.googlemail.com"
"smtp.gmail.com"
Si le pongo en la variable smtpSecure True, me dice que este Phyton no soporta SSL, la ventana con el mensaje es la que te puse en un mensaje anterior.
Si tienes la misma versión de OpenOffice me gustaría que lo probases a ver si te funciona así. Y, a partir de ahí, seguir investigando el por qué lo de la variable no definida con Option Explicit cuando está definida en el procedimiento y lo de los puertos.
OpenOffice 4.1.0 en Windows 8.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Mi sistema es Windows Vista

He probado con las versiones 3,2 de OpenOffice y 4.0 de LibreOffice

No me funciona con ninguna. Cuando coloco el puerto 25 me da un mensaje de error, y cuando coloco el 465 se cuelga

Dentro de un par de semanas podré probarlo con un windows 7 y ya comentaré algo
Win XP SP3 OpenOffice 3.2.1
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Mails con Body y con Adjuntos

Mensaje por SLV-es »

Hola

La siguiente adaptación de estas macros me han funcionado perfectamente para enviar correos con adjuntos en W7 con Outlook 2010.
Voy a probarla con otros clientes de correo, a ver que tal.
No me da error con Option Explicit activado.

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Me ocurre lo mismo con este código que con el anterior, después de unos segundos el programa "No responde".
Como a vosotros si que os funciona es obvio que el problema está en la información que le doy de mi smtp

Por otro lado, indicas que el correo lo envías a través de Outlook, como Mauricio comentó hace unas entradas, da la sensación de que el código envía directamente el correo a través del servicio de smtp de tu correo y no a través de ningún cliente como Outlook. ¿En qué línea del código se utiliza el envío a través de Outlook?
Win XP SP3 OpenOffice 3.2.1
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Mails con Body y con Adjuntos

Mensaje por SLV-es »

Efectivamente, lo debe enviar a través del servício SMTP; menciono el Outlook porque en anteriores pruebas de envíos de correo en Windows sólo me funcionaban si tenía instalado un cliente de correo (MS Outlook u Outlook Express) y no me funcionaban con webmails (gMail, Outlook -antes hotmail-, Yahoo Mail, etc), cosa que no he comprobado de momento. A ver si tengo un rato y me pongo.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: Mails con Body y con Adjuntos

Mensaje por RASAPA »

Buenos dias,
Probado y funcionando en windows 7 i libreoffice 4.1.3

Código: Seleccionar todo


Option Explicit 

' ======== Aquí van tus detalles ======== 
const myAddress = "xxxxxxx@gmail.com"                     'la dirección de correo desde donde vas a enviar el correo
const smtpServer = "smtp.googlemail.com"                   'tu servidor
const smtpPort = 25                                                     'el puerto de tu servidor
const smtpSecure = true                                               ' true si es seguro 
const smtpUser = "xxxxxxx@gmail.com"       'el usuario de tu cuenta, normalmente lo que va a la izquierda de la dirección de correo
'El tamaño del archivo adjunto pero no sé en qué unidad está.
const attachmentMaxSize = 10000000 
Con Opion Explicit incluido.
No tengo instalado el outlook, mi correo es siempre a traves de gmail.
Funciona sin adjuntos y con adjuntos.
Le das clic i envia el correo, saliendo el mensaje de enviado con exito.
Saludos
Ramon
LibreOffice 7.3.1.3
Linux Mint 20.3
SMP
Mensajes: 8
Registrado: Jue May 15, 2014 2:15 pm

Re: Mails con Body y con Adjuntos

Mensaje por SMP »

Ya funciona correctamente con la Option Explicit. Ahora queda comprobar ambos códigos para aprender dónde estaba el error.
Eltete, si se te queda colgado es que tú ADSL no utiliza esos puertos para SMTP. Lo puedes comprobar haciendo un telnet en la consola de Windows , "Símbolo del sistema" creo que es en Windows Vista. Prueba con el puerto 587 que parece que lo usan algunos operadores para SMTP porque el problema, casi seguro, es el puerto. A mí me pasaba lo mismo cuando ponía un puerto diferente. Ahora, una vez que comprobé que el puerto 25 y el 587 son los que usa mi operador para SMTP, con cualquiera de ellos me funciona correctamente.
Lo único es que no soporta SSL así que tengo que poner el SmtpSecure a False.
Gracias a todos por sus aportaciones.
OpenOffice 4.1.0 en Windows 8.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Sigue sin funcionarme , bien porque se cuelga, bien porque sale algún mensaje de error relacionado con la macro SendMail.

He intentado hacer la comprobación de Telnet que sugeríais, pero no he podido activar el servicio de Telnet (tengo Vista, y ese servicio está desactivado por defecto, he intentado activarlo a través de "Activar o Desactivar características de Windows", pero me sale una lista vacía.)

La próxima semana lo haré correr en otro terminal con Windows 7 y comentaré las novedades

Muchas gracias a todos
Win XP SP3 OpenOffice 3.2.1
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Mails con Body y con Adjuntos

Mensaje por eltete »

Hola de nuevo:

He podido ejecutar la macro desde Windows 7 y si que me ha funcionado (no sé si ha sido por el S.O. o porque en en el PC en el que trabajaba con Windows Vista tenía alguna cuestión de comunicaciones mal configurada, que no me extrañaría).

He utilizado el puerto 25 y false, con otras alternativas no me ha funcionado, concretamente con el 465 se colgaba.

Muchas gracias a todos y hasta siempre.
Win XP SP3 OpenOffice 3.2.1
Responder