Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 18. 11. 2016 11:37:35

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Ahoj, nevíte náhodou někdo jak přidat do mailu přílohu? V hyperlinku jsem použil mailto v syntaxi jazyka html tedy takto: "mailto:jmeno@domena.cz?subject=věc&body=text mailu&attach="c:test.zip"" vše funguje kromě attach to se mi nějak nedaří rozjet, zkoušel jsem i různé zápisy té adresy a různé zápisy uvozovek, ale nic. Mail se krásně vytvoří, vše je vyplněné, ale příloha není.


Ještě bych měl říct, že mail se otvírá v thunderbirdu, může to být i tím že příkaz attach tento klient nepodporuje, nevím.

Editoval ludviktrnka (21. 11. 2016 11:52:28)


LibreOffice 5.4.

Offline

#2 18. 11. 2016 12:30:35

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Pokud vím tak někteří klienti umí v emailu otevřít přílohu, ale je jich málo. Tipoval bych že to budou umět webové služby - tuším seznam a google - ale nevím to přesně. Tam by to chtělo otevírat ne Thunderbirda ale přímo poštu na portále. Z příspěvku není moc zřejmé jestli se jedná o odesílání, nebo přijímání.


     Je možné že Thunderbird potřebuje nějakou úpravu - třeba extension, nebo jen někde něco nastavit. Já ho mám sice doma také, ale nyní doma nejsem a stejně používám jen přímo weby a ne klienty OS. Takže v podstatě nevím jestli by to uměl třeba jiný klient - je jich více pro Windows i Linux.
     Jde také o to, jestli odesíláte, nebo jen přijímáte. Klasika je podle mne odesílat s přílohou ale ta musí být připojena k emailu jistě pomocí URL. Tohle by měly Libre i Apache umět automaticky nejméně ve spojení s hromadnou korespondencí. Jak v případě otevírání přijaté pošty nevím ale myslím že se musí otevřít příloha samostatně - do emailu se asi nezobrazuje.
      Zase když byste otevíral přímo poštu například Seznamu, tak byste měl vidět na browseru přílohu a to pak uložit automaticky jako stránku. Přístupy a hesla se dají nastavit tak bych v tom i s uložením (makro)větší problém neviděl.
      Možná by šlo i přímo na Seznam (Google ap,) odesílat email i s přílohou to by se ale muselo načíst přímo ze stránky.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 18. 11. 2016 13:18:29

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

myslím pouze odesílání a pouze z calcu


LibreOffice 5.4.

Offline

#4 20. 11. 2016 17:53:40

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Otestujte tohle :
     Doma mi to chodí jen do Thunderbirda - ten ale není nastaven jako výchozí. Takže když navolím hned odeslat vyskočí mi chyba a po stornování se pošta zruší. Takže chodí mi to jen na vyzkoušené "nFlag = 0", zatímco ihned odeslat je "nFlag = 1" - to musíte nastavit.
     Ještě dejte pozor mám maker více a tak jsem zjistil, že doporučují počkat mezi dvěma odesláním na Wait 1000 aby se neskl klient. Já to tam nemám, ale snadno to zabudujete stejně jako více kopií nebo příloh. Přílohy mají skutčně pod URL.


     Také jsem viděl rozdílnost pro Linux a Windows - je to ale jenom volání jiné služby UNO. To jsem z Linuxu netestoval, ale je možné, že Linux vezme i tohle.

Sub testSendMail
   Dim aAttachement(0) As String, aCCRecipients(0) As String
   sRecipient = "name@domena.xxx" 'email adresa cíle
   ReDim aCCRecipients(1)
   aCCRecipients(0) = "XY@ooo.xxx" 'kopie 1 jiný subjekt
   'aCCRecipients(1) = "YX@aaa.xxx" 'kopie 2 jiný subjekt
   sSubject = "test odeslání pošty" 'předmět
   aAttachement(0) = ConvertToURL(ThisComponent.URL) 'Přepsat na URL přílohy
   nFlag = 0   '0-Otevře se okno testu emailu (Thunderbird),  1-okamžitě odesílat poštu
   'aAtachment ...(ThisComponent.URL) příloha jako celý tento dokument
   Call subSendMail(sRecipient,sSubject,aAttachement(),nFlag)
   Call subSendMailWithCC(sRecipient,aCCRecipients(),sSubject,aAttachement(),nFlag)
End Sub

Sub subSendMailWithCC(sRecipient As String,aCCRecipients,sSubject As String,aAttachements,nFlag As Integer)
'  nFlag:  '0-Otevře se okno testu emailu (Thunderbird),  1-okamžitě odesílat poštu
   oMailer = createUnoService( "com.sun.star.system.SimpleSystemMail" )
   oMailClient = oMailer.querySimpleMailClient() 
   oMessage = oMailClient.createSimpleMailMessage()
   oMessage.setRecipient( sRecipient )
   oMessage.setCCRecipient( aCCRecipients() )
   oMessage.setSubject( sSubject )
   oMessage.setAttachement( aAttachements() )
   oMailClient.sendSimpleMailMessage(oMessage,nFlag)
End Sub

Sub subSendMail(sRecipient As String,sSubject As String,aAttachements,nFlag As Integer)
' nFlag:  '0-Otevře se okno testu emailu (Thunderbird),  1-okamžitě odesílat poštu
   oMailer = createUnoService( "com.sun.star.system.SimpleSystemMail" )
   oMailClient = oMailer.querySimpleMailClient() 
   oMessage = oMailClient.createSimpleMailMessage()
   oMessage.setRecipient( sRecipient )
   oMessage.setSubject( sSubject )
   oMessage.setAttachement( aAttachements() )
   oMailClient.sendSimpleMailMessage(oMessage,nFlag)
End Sub

    Pouze vzorcem asi příloha nastavit nepůjde, protože dialog pro hyperlink neobsahuje možnost přílohy. Takže doporučuji udělat si z těchto vzorců funkci kam zadáte 3 parametry - předmět, obsah a přílohu. Když tak se na to podívám.

Editoval neutr (20. 11. 2016 18:00:55)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 20. 11. 2016 19:33:01

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Děkuji za makra, vyzkouším. Ještě jsem to probíral na hlavním fóru OpenOffice a tam tedy zpochopbnili thunedrbird resp. většinu klientů, že u Mailto nepodporují funkcionalitu Attach, takže to prostě nejde. Tím pádem makro je zřejmě jediná cesta.


EDIT: makra jsem otestoval. Funguje to perfektně ale má to jeden zásadní háček. Není tam vyplněn text mailu a jak jsem se díval na interface (nevím zda to je správný termín) com.sun.star.system.SimpleSystemMail tak jsem pochopil, že tam ani možnost vyplnění těla mailu není. (Jediný nápad jak to obejít mám ten, že by se tím makrem ještě uložil text do schránky a v mailu by se kromě odeslání ještě muselo stisknout ctrl+v, ale je to taková berle). Nemáte nějaký nápad jak to udělat?

Editoval ludviktrnka (21. 11. 2016 07:59:49)


LibreOffice 5.4.

Offline

#6 20. 11. 2016 22:53:07

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Používám jen zřídka a Thunderbird už vůbec. Co mne napadlo, je použití odkazu na přílohu ve tvaru: file:///...

Možná jste to už testoval.

Offline

#7 21. 11. 2016 08:14:34

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

... tady jsem našel interface které obsahuje všechna potřebná nastavení: https://www.openoffice.org/api/docs/com … ssage.html akorát že s tyto stránky se mi nikdy nedaří převést v konkrétní program, moc nechápu jak ty informace používat, ačkoli jsem to už mnohokrát zkoušel.


LibreOffice 5.4.

Offline

#8 21. 11. 2016 08:57:35

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

... původně jsem tedy do maker vůbec jít nechtěl, ale vypadá to že nebude zbytí. Našel jsem toto makro, ale vrací chybu a nějak nevím jak se jí zbavit:

Sub dalsiMailer

Dim eMailAddress as String
Dim eSubject as String
Dim eMailer as Object
Dim eMailClient as Object

eMailAddress = "trnka@autonapul.cz"
eSubject = "Test email"
eMailer = createUnoService("com.sun.star.system.SystemMailProvider")
eMailClient = eMailer.queryMailClient() 'proměnná objektu není nastavena
eMessage = eMailClient.createMailMessage()
eMessage.Recipient = eMailAddress
eMessage.Subject = eSubject
'eMessage.CcRecipient = Array("dummy2@gmail.com")
'eMessage.BccRecipient = Array("dummy@gmail.com")
eMessage.Body = "This is the text of the test message."
AttachmentURL = convertToUrl("d:\_prace\ksefty\OO_pokusy\vzorec3.jpg")
eMessage.Attachement = Array(AttachmentURL)
eMailClient.sendMailMessage ( eMessage, com.sun.star.system.MailClientFlags.NO_USER_INTERFACE )

End Sub

EDIT: tak to vypadá že jsem zase narazil na rozdíl mezi AOO a LO. Na stránkách LO není vůbec SystemMailProvider uveden je tam pouze SimpleSystemMail, který nemá ve vlastnostech zadání těla textu. Tož to už si opravdu nevím rady.

Editoval ludviktrnka (21. 11. 2016 09:37:26)


LibreOffice 5.4.

Offline

#9 21. 11. 2016 09:01:17

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

lp. napsal(a)

Používám jen zřídka a Thunderbird už vůbec. Co mne napadlo, je použití odkazu na přílohu ve tvaru: file:///...

Možná jste to už testoval.

díky, to jsem taky zkoušel, ale opravdu je chyba na straně thunderbirdu, resp. možná to není chyba, zkrátka nepodporují přidávání příloh skrze příkaz "mailto". Asi ji to ochrana proti zneužití ve webech, možná je to příliš rizikový prvek.


LibreOffice 5.4.

Offline

#10 21. 11. 2016 11:27:16

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Vyřešeno. Do makra od Neutr stačí přidat řádek oMessage.body = "Body text" a mám k dispozici vše co jsem potřeboval. tzn. adresu příjemce, subject, tělo mailu, příloha. Dík moc. Ještě nevím zda se budu pokoušet si z toho dělat funkci, v zásadě to asi nebude potřeba. Zatím bych to pokládal za vyřešené.

 
Sub PosliMail
  doc = thisComponent
  list = doc.getCurrentController.getActiveSheet
  adresa = list.GetCellRangeByName("A1").string
  subject = list.GetCellRangeByName("A2").string
  telo = list.GetCellRangeByName("A3").string
  priloha = list.GetCellRangeByName("A4").string

  Mailer (adresa, subject, telo, priloha)
end sub

Sub Mailer (eMailAddress as String, eSubject as String, eBody as String, Attachment as String)

  Dim eMailer as Object
  Dim eMailClient as Object
  Dim eMessage as Object
  Dim nFlag as integer

  nFlag = 0
  eMailer = createUnoService( "com.sun.star.system.SimpleSystemMail" )
  eMailClient = eMailer.querySimpleMailClient()     
  eMessage = eMailClient.createSimpleMailMessage()
     
      eMessage.setRecipient(eMailAddress)
      eMessage.setSubject(eSubject)
      if Attachment <> "" Then  
         eAttachmentURL = convertToUrl(Attachment)
         eMessage.setAttachement (Array(eAttachmentURL))
      end if         


      eBody = Replace(eBody,"/",chr(10)) 'jako zalomení řádku se do zprávy vkládá lomítko
      eMessage.body = eBody
      
  eMailClient.sendSimpleMailMessage( eMessage, nFlag)

End Sub

Editoval ludviktrnka (21. 11. 2016 23:59:12)


LibreOffice 5.4.

Offline

#11 22. 11. 2016 22:42:48

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

Tak abych to zde dokončil. Hyperlink použít lze ale trochu komplikovaně k volání makra:

=HYPERLINK("vnd.sun.star.script:Standard.Module1.HyperSendMail?language=Basic&location=document&MailAddress="&A1&"&Subject="&A2&"&Body="&A3&"&Attach="&A4;"Send e-mail")

Jo a v LO toto funguje až od verze 5.2. Makro pak musí obsahovat proceduru co z URL vyzobe ty vstupní parametry a předá je výše uvedenému makru k odeslání mailu. Takže původní jednoduchá věc se zvrhla v docela složitý proces.

Sub HyperSendMail (sURL$) 'this is solution for function HYPERLINK in the sheet
   adresa = getArgumentFromURL(sURL,"MailAddress")
   predmet = getArgumentFromURL(sURL, "Subject")
   telo = getArgumentFromURL(sURL, "Body")
   priloha = getArgumentFromURL(sURL, "Attach")
  Mailer (adresa, predmet, telo, priloha)
End Sub

Function getArgumentFromURL(sURL$,sName$) as String
on error goto exitErr:
Dim iStart%, i%, l%, sArgs$, a()
   iStart = instr(sURL, "?")
   l = len(sName)
   if (iStart = 0) or (l = 0) then exit function
   ' sArgs behind "?":
   sArgs = mid(sURL, iStart +1)
   a() = split(sArgs, "&")
   for i = 0 to uBound(a())
      ' not case sensitive:
      if instr(1, a(i), sName &"=", 1) = 1 then
         getArgumentFromURL = mid(a(i), l +2)
         exit for
      endif
   next
exitErr:
' return ""
End Function

LibreOffice 5.4.

Offline

#12 23. 11. 2016 05:45:52

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: možnosti funkce HYPERLINK - MAILTO - VYŘEŠENO MAKREM

To je docela zajímavé. Kdysi šlo volat pomocí hyperlinku makra. Je to docela praktický způsob. Z nějakého důvodu to asi 2-3 roky nešlo. Myslím že jsem četl i nějaké zdůvodnění které popisovalo, že jde o záměr a ne chybu.
     Nyní to zřejmě znovu jde - tedy jak uvádíte od LO verze 5.2. Přestal jsem uvažovat o této možnosti a hned to otestuji. Snad to bude fungovat v LO i AOO stejně. Díky za info.


PS - ověřeno hyperlinky spouští makra jak v LO, Tak v AOO. Hned to použiju. Hyperlink lze snadno vygenerovat makrem. Místo toho jsem musel makrem dávat tlačítka a to jsou objekty které se špatně mažou. Dělám něco co ukazuje různé testy na stejné stránce. Takže co test to jiné ovládání. Tím mi odpadla docela velká starost i když i ta tlačítka smazat lze - ale nejlépe pomocí UNO což není moc šikovné při programování.

Editoval neutr (23. 11. 2016 08:03:53)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí