Paradox Community

Items in pnews.paradox-programming

Subject:Re: Upgrading to Win 10 and P11
Date:Thu, 17 Sep 2020 16:17:02 +1000
From:Leslie <"ViaThe List"@NOSPAM.com>
Newsgroups:pnews.paradox-programming
Thanks for sending that because I was going to either post C code or 
have to translate it to PAL.



On 16/09/2020 7:13 PM, Thies Grimm wrote:
> weil ihr es seid, Leslie und Günther:
>
> **************************************************
>
> { <Doku>  **** **** **** **** **** **** **** **** **** **** ///
> @function      cmOLSendMail
> @category
> @Keywords
> @abstract      liest die Mailvariable aus und erzeugt per
>                OLE eine entsprechende Outlook-Mail
> @Remarks
> @Parameter
> @Return
> @Examples
> @todo
> @Uses          Outlook
> @Client
> @Status
> @ChangeLog
> ; //  **** **** **** **** **** **** **** **** **** **** </Doku>}
> ; //
> method cmOLSendMail(
>             var msg Mail
>             ) Logical
> var
>    dyn               dynArray[] String
>    stSubject         String
>    stMsgText         String
>    dynAddress        dynArray[] Smallint
>    dynAttachment     dynArray[] String
>
>    stAddress         String
>    siAddrtype        Smallint
>
>    stFilename        String
>    stMoniker         String
>    liPos             LongInt
>
>    sApp              String
>    oOutlook, oItem,
>    oRec, oAtt, oTmp,
>    oInspector        OLEAuto
>
>    sSig              String
>    ar                Array[] String
>
>    si                Smallint
>    li                Longint
>    element           String
>
> endVar
>
>
> ; //   **** **** **** **** **** **** **** **** **** **** ///
> ; //   Outlook gestartet?
> ; //   **** **** **** **** **** **** **** **** **** **** ///
>    enumWindowHandles(dyn, "mspim_wnd32")
>    if dyn.size() = 0 then
>       msgstop("Achtung",
>              "Starten Sie bitte erst Outlook und " +
>              "versuchen es dann noch einmal!")
>       return False
>    endIf
>
>
> ; //   **** **** **** **** **** **** **** **** **** **** ///
> ; //   Mail Variable auslesen
> ; //   Adressen, Betreff, Nachricht, Anhänge
> ; //   **** **** **** **** **** **** **** **** **** **** ///
>    for li from 1 to msg.getAddressCount()
>       msg.getAddress( li, stAddress, siAddrtype )
>       dynAddress[stAddress] = siAddrtype
>    endFor
>    stSubject = msg.getSubject()
>    stMsgText = msg.getMessage()
>    for li from 1 to msg.getAttachmentCount()
>       msg.getAttachment(li, stFilename, stMoniker, liPos)
>       dynAttachment[li]=stFilename
>    endfor
>
>
> ; //   **** **** **** **** **** **** **** **** **** **** ///
> ; //   Outlook
> ; //   **** **** **** **** **** **** **** **** **** **** ///
>    sApp = "Outlook.Application"
>
> ; //   oOutlook = Outlook.Application
>    if NOT oOutlook.open(sApp) then
>       msgStop("Achtung",
>               "Fehler beim Öffnen des OLE-Objektes " +
>               sApp + ".")
>       return False
>    endIf
>
> ; //   oItem = new Microsoft Outlook item
>    try
>       oItem = oOutlook.createItem(0)
>    onFail
>       errorLog(UserError,
>                "Trouble in Outlook. (oOutlook.createItem)")
>       errorshow()
>       return False
>    endTry
>
> ; //   cmOLEAutoShowInfos(oItem,2)
>
> ; //   Empfänger, Recipients
>    try
>       oRec = oItem.Recipients
>    onFail
>       errorLog(UserError,
>               "Trouble in Outlook. (oItem.Attachments)")
>       errorshow()
>       return False
>    endTry
>
>    forEach element in dynaddress
>       switch
>          case dynaddress[element] = 1: oRec^add(element)
>          case dynaddress[element] = 2: oItem.CC  = element
>          case dynaddress[element] = 3: oItem.BCC = element
>       endSwitch
>    endForEach
>    oRec.close()
>
> ; //   Betreff, subject
>    oItem.subject = stSubject
>
> ; //   Message
> ; //   Signatur erst auslesen, um sie am Ende vom Body
> ; //   wieder einzufügen. Signatur geht sonst verloren.
>    oItem.display()
>    sSig = oItem.Body
>
> ; //   Message und Signatur wieder hinzufügen
>    oItem.Body = stMsgText + "\n" + sSig
>
> ; //   Anhang, Attachments
>    if dynAttachment.size() > 0 then
>       try
>          oAtt = oItem.Attachments
>       onFail
>          errorLog(UserError,
>                  "Trouble in Outlook. (oItem.Attachments)")
>          errorshow()
>          return False
>       endTry
>
>       forEach element in dynAttachment
>          oTmp = oAtt^add(dynAttachment[element])
>          otmp.close()
>       endForEach
>
>       oAtt.close()
>    endIf
>
>
> ; //   Outlook nach vorne holen
>    try
>       ;oItem.Display()
>       ; Display-Methode wird laut MSDN nur noch aus
>       ; Kompatibilitätsgründen unterstützt, besser ist die
>       ; Activate-Methode des Inspector-Objects zu nutzen
>       oInspector = oItem.getInspector()
>       oInspector.activate()
>    onFail
>       errorShow()
>    endTry
>
> ; //   OLE-Objekte wieder schließen
>    oInspector.close()
>
>    oItem.close()
>    oOutlook.close()
>
>    errorClear()
>
>    return True
>
> endMethod
>
> **************************************************
>
>
>
>
> =?UTF-8?Q?G=c3=bcnter?= <info@NoSpam-mk-news.com> wrote:
>> Leslie,
>>
>> please give a little HowTo for the Code with COM/automation, because we
>> tell our users to install Outlook 32 Bit for the function of mailto.
>>
>> Günter, Paradox 9
>>
>> Am 15.09.2020 um 05:35 schrieb Leslie:
>>>>
>>>
>>> We no longer use MAPI for Outlook given that on Windows 64 with Outlook
>>> 64, MAPI causes a bunch of issues called from a 32 Bit application -
>>> even as trivial as the background stationery not happening correctly.
>>>
>>> So instead we now use COM/automation (Ole in old speak) to send emails
>>> when Outlook is the default mail application and it just works.
>>>
>>>
>>>
>>>
>

-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


Copyright © 2004 thedbcommunity.com