PB12.5 Classic - What is the best path to interface with MS Outlook

I am sure this topic has been covered but darn if I can find anything on it.
My client is moving over to MS Outlook.  Not sure at this point if its going to be just an exchange server or outlook 365.  I am trying to figure out what the best path would be to interface to it.
Using: PowerBuilder 12.5 Classic (no access to vb development)
What functionality is needed...
Need to be able to access emails including attachments. Need to have option to send in HTML format so MAPI connection may not be feasible.
Need to have access to the calendar to view/edit meetings/appointments including viewing users availability (Busy search).
     Must also be able to know if users accept/reject meeting requests.
Looking for the best direction... use exchange web service api.... smtp...ole...etc..
Was directed to look into using Exchange Web Services managed API but unfortunately not able to figure out how to connect to it using PB12.5 classic, all examples I can find use C# or VB.
Note: The application that would run this runs on PC's and thin clients.
If there is a best direction could someone point me to some sample code/tutorial/whitepaper etc.. on how best to proceed it would be greatly appreciated.
Thanks to all that reply
Dave V.

I have an example of using OLE Automation with Outlook:
http://www.topwizprogramming.com/freecode_outlook.html
I also have an EMailSMTP example that can be used to send email. Now that we have switched to Outlook365 we started having sporadic issues. Now we used the paid version of the SMTP control at AspEmail.com - Free Secure ASP Mail Component for an ASP and ASP.NET Environment.
The paid version is required for TLS secure connections. Since PB is 32bit, make sure you use the 32bit version.
OLEObject oleMail
String ls_html, ls_file
Integer li_rc
// create Mail object
oleMail = Create OLEObject
li_rc = oleMail.ConnectToNewObject("Persits.MailSender")
If li_rc < 0 Then
  MessageBox("Process", "Persits.MailSender failed: " + String(li_rc))
  Return
End If
// build the body
ls_html  = "<html><body>"
ls_html += "<p>This is a test!</p>"
ls_html += "</body></html>"
// email the file
oleMail.RegKey   = "xxxxx"
oleMail.Host     = "smtp.office365.com"
oleMail.Username = "xxxxx"
oleMail.Password = "xxxxx"
oleMail.Port     = 587
oleMail.TLS      = True
oleMail.From     = "[email protected]"
oleMail.Subject  = "A test of Persits.MailSender from PowerBuilder"
oleMail.IsHTML   = True
oleMail.Body     = ls_html
oleMail.AddAddress("[email protected]")
oleMail.Send()
oleMail.DisconnectObject()
MessageBox("Process", "Complete!")

Similar Messages

  • What is the best Path for a J2EE developer with oracle?

    Hi,
    I am a J2EE developer, for the time being I work at a Commercial Bank as an enterprise application developer. I have learnt java when I was following a local IT diploma and with the help of books, works at my working place and the internet , today I am developing J2EE applications with JSP,Servlets,JSF2.0,EJB3.0 and third party JSF libraries etc. (I am also developing softwares using other programing languages such as Asp.net, C#.net, WPF etc, but I prefer to be in the java path). Other than that, I'm also working as the UI designer of most of our applications.
    I have those skills and practice after working for 4 years as a web/enterprise application developer & a UI designer, but now I have to focus on some paper qualifications and hence I am doing BCS.
    Now I want to be a java professional in Oracle's path, and I need to know what is the best path I can select to move with Oracle. I finished my classes of SCJP , but didn't do the exams as there were some rumors that Oracle will dump those exams in the future. I am interested in Oracle university, but I am unable to even think about it as I live in Sri Lanka and don't have that much of financial wealth to go USA and join.
    So I really appreciate if any Oracle professional could suggest me the best educational path according to what I mentioned about my technical and career background. Because I have a dream to join Oracle one day as an employee and being a good contributer to the same forum, which I am getting helps today!
    Thanks!!!

    As you can see on our website, Oracle did not retire the Java certifications. You can browse through the available certifications and hopefully help to determine your path.
    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=140
    SCJP has now become Oracle Certified Professional Java Programmer. You can find more info on those exams on our website here: http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=320.
    Regarding training, perhaps live virtual training would be an option for you. You can find more information at http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=233.
    Regards,
    Brandye Barrington
    Certification Forum Moderator

  • What is the best way to work with Word documents in The InDesign CS4???

    I work in Microsoft Word 2007 and all my documents have *.doc format.
    What is the best way to work with Word documents in InDesign CS4???
    David Blatner says to avoid copying and pasting text from Word instead of placing it (Ctrl+D).
    How about pasting RTF or Text Document???
    I want to make book's layout in ID CS4 and its main feature is that there is the left page with text and the right - with graphics.
    So, as I understand to place the text on each page I must create for example 70 Word documents and place each item on 70 left pages???
    It loks like wasting time. I sthere another way of making such layout???  What kind????

    It's best to place any text.
    You can have all of your text in one file and use auto-flow to add threaded text frames and pages as required (Hold down the Shift key when you click the loaded text cursor), but it's a little non-standard to have the thread only on one side of the spread from the auto-flow perspective, so you'll have to set up properly.
    This is one case where a master text frame will work to your advantage. On your master page spread, add a text frame to the left page, but not to the right (or at least not threaded to one on the right -- for some other project you might actually want two independent text threads). Hold the loaded cursor over a frame on the left side of a document page and auto-flow. ID will add new spreads as necessary, but only put the text on the left side.
    Peter

  • What's the best way to deal with floating point errors?

    What's the best way to deal with the decimal number errors in Flex?
    Lets say I have:
    var number1:Number = 1.1;
    var number2:Number = 1;
    var result:Number = number1 - number2;
    trace(result);
    I get "0.10000000000000009".
    What's the best way to deal with this so that i get the right result?
    Using the trick: result = Math.round( result * Math.pow(10,13) ) / Math.pow(10,13); is not useful as such when using big numbers.
    For example, If number1 = 100000000001.1, and number2 = 0.2, I get "100000000000.90001" as result. The previous rounding fixes rounding errors after 13th decimal, but here the first rounding errors come after 4 digits.
    The toPrecision method in Number and NumberFormatter dont seem be of use by themselves because of the same reason.
    So I'd have to check how big the number is, and then round the number based on that.
    So far I've constructed a method that does that with logarithms like this:
    public function floatFix(number:Number):Number{
          var precision:int = 14-Math.floor(Math.log(Math.abs(number))*Math.LOG10E);
          var precisionFactor:Number = Math.pow(10, precision);
          return Math.round(Number(number*precisionFactor))/precisionFactor;
    It just seems rather odd that one would have to create and use something like that to just count 1.1-1; There's a lot of calculating in that method, and i'm guessing that having to use that in a loop could slow down a program quite a bit.
    I think there really should be a pre-built method in flex for something like this, but I can't find any.
    Anyone know any better/faster ways?

    Use the application server database pooling services to create a datasource that can be access using JNDI.
    Move the database access code to a Servlet so that a JSP submits a form to the Servlet that does the database access and packages the data into a bean which is passed to another JSP to be displayed.

  • What is the best external hard drive with MacBook Pro

    What is the best external hard drive with MacBook Pro?

    I agree with Allan, and that link is also called OWC, their hard drives are great.  Have three of their Mercury Pro Elite 2 TB quad interface drives.  They will connect eSATA, Firewire 800 & 400, USB2, so broad reange of options.  Drives seem to come Mac HFS formatted, but I always reformat and partition the drives.  Service and quarantees are top notch.
    They offer a wide range of drives/drive systems so like Allan said, spend some time seeing what the have.

  • What is the best way to deal with memory leak issue in sql server 2008 R2

    What is the best way to deal with memory leak issue in sql server 2008 R2.

    What is the best way to deal with memory leak issue in sql server 2008 R2.
    I have heard of memory leak in OS that too because of some external application or rouge drivers SQL server 2008 R2 if patched to latest SP and CU ( may be if required) does not leaks memory.
    Are you in opinion that since SQL is taking lot of memory and then not releasing it is a memory leak.If so this is not a memory leak but default behavior .You need to set proper value for max server memory in sp_configure to limit buffer pool usage.However
    sql can take more memory from outside buffer pool if linked server ,CLR,extended stored procs XML are heavily utilized
    Any specific issue you are facing
    Please mark this reply as the answer or vote as helpful, as appropriate, to make it useful for other readers

  • What is the best way to work with AVCHD 720 24p footage in FCE4.1?

    Hi I have a Panasonic HMC-150 and I've been shooting 720 24p footage at 21 mbps transfer rate.
    I was wondering what is the best way to work with this material in FCE 4.1? I see that in the easy set up menu they only have the option of 1440X1080i at 50 or 60 fps or 1920X1080i at 50 or 60 fps.
    Also in the rates drop down menu there is only 50 or 29.97.
    So I was wondering which is the best choice for 720 24p footage and will it look alright in any of them? Also is it possible to customize these settings?
    And finally can you work with faster transfer rates (21mbps) in FCE?

    Yikes, this is going to be tricky since FCE does not support native 24p editing.
    The work around for some of us is that AVCHD material that is 24p is often recorded to disc at 60i using telecine, in which case it can be editing at 29.97 frames per second, and then detelecined afterward for final export at 23.98 fps. The problem is that I think your camera actually records real 24p - not 24p packed into 60i. When you import the material from the camera what does QuickTime report the framerate as?

  • What is the best way to work with mixed media in 1080 timeline?

    Hi there,
    I have a project shot mostly in 1080 24p but a bit of 720 24p and 4x3 30p footage.
    What is the best way to work with this mixed media?
    Thanks!
    Steven

    Hi Shane,
    Ok just to recap (thanks for being patient by the way)...I have put some questions in here...feel free to write in caps to respond and we'll put this baby to rest!
    1) I will work in a 1080p FCP sequence, correct?
    2) HD 1080p footage captured as applepro res hq I will leave as is and work with?
    3) HD 720p footage which was captured as applepro res hq. Can I just drop in 1080 timeline and let FCP do its work? Or should i run through compressor, if so what setting shall I submit it too?
    4) I dont have a budget for an external hardware to convert SD to HD...should I capture my SD Beta through Final Cut and just leave and let FCP do its work? Or should I run through compressor? If so what setting shall I submit it too?
    5) For for my master sequence in FCP am I not using an I-Frame format apple pro res if I am using my apple pro res hq 1080 footage as my formatted sequence? I am not sure what you mean by GOP?
    6) I also found some 60p footage 1080p XDCAM compressor shot with the same XDCAM camera. I put in the 1080p 24p timeline but it was pretty choppy...any ideas of this conform?
    Thanks very much for all your help it has gone along way,
    Steven
    Saying what CODECS you are working with was my question. 1080, 720, 4:3...really says nothing. There are a dozen 1080 codecs, another dozen 720 codecs, and nearly 100 4:3 formats.
    Best to capture all the footage to one uniform codec.
    Second best is to work with one format and let FCP conform the rest to that...IF and only IF that format is an I-Frame format like ProRes. GOP formats as master sequence formats cause TONS of issues.
    What I'd do is work 1080 ProRes, just add the 720p footage (Use Compressor to convert it if you didn't have a lot, but if you had a lot, just add it), but I'd capture all the SD 4:3 footage via a Kona 3 or Matrox MXO2 as 1080 ProRes. Hardware conversion of SD to HD is much better than anything FCP can do. AE might do good as well. But then use Compressor to convert 29.97 footage captured (you can't convert 29.97 to 23.98 when you capture) to get to 23.98.

  • What´s the best approach to work with Excel, csv files

    Hi gurus. I got a question for you. According to your experience what's the best approach to work with Excel or csv files that have to be uploaded through DataServices to you datawarehouse.
    Let's say your end-user, who is not a programmer, creates a group of 4 excel files with different calculations in a monthly basis, so they can generate a set of reports from their datawarehouse once the files have been uploaded to tables in your DWH. The calculations vary from month to month. The user doesn't have a front-end to upload the excel files directly to Data Services. The end user needs to keep a track of which person uploaded the files for a determined month.
    1. The end user should place their 4 excel files in a shared directory that will be seen by DataServices.
    2. DataServices will execute certain scheduled job that will read the four files and upload them to the Datawarehouse at a determined time, lets say at 9:00pm.
    It makes me wonder... what happens if the user needs to present their reports immediately so they can´t wait until 9:00pm.  Is it possible for the end user to execute some kind of action (out of the DataServices Environment) so DataServices "could know" that it has to process those files right now, instead of waiting for the night schedule?
    Is there a way that DS will track who was the person who uploaded those files?
    Would it be better to build a front-end for the end user so they can upload their four files directlyto the datawarehouse?
    Waiting for your comments to resolve this dilemma
    Best Regards
    Erika

    Hi,
    There are functions in DS that captures the input files automatically. You could use file_exists() or wait_for_file() option to do that. Schedule the job to run every certain minute and if the file exists then run. This could be done by using a certain file name with date and timestamp etc or after running move the old files to archive and DS wait for new files to show up.
    Check this - Selective Reading and Postprocessing - Enterprise Information Management - SCN Wiki
    Hope this helps.
    Arun

  • What is the best way to deal with different audio sample rates on the same timeline ?

    what is the best way to deal with different audio sample rates on the same timeline ?

    You don't have to do anything special. If possible, start your project with a clip that has the desired target frame rate and audio sample rate, and your project parameters will be set automatically. Other sample rates will be converted under the covers.
    For example, if your video is shot at 48khz, you can add music files at 44.1khz with no problem.
    If you are recording audio that you want to synch with video (multicam), you will get best results if everything is 48khz, but you can use 44.1 if that is all you have. Once I forgot to reset my Zoom to 48,000 and it still worked.

  • What is the best dvd burning program with a nice menu like idvd that works with Final cut pro

    What is the best dvd burning program with a nice menu like idvd that works with Final cut pro, I am wanting to burn mainly wedding dvds but also sports and other things we used to use idvd but then upgraded our computers and now we dont have it. idvd was the only thing i could find that worked.
    Thanks

    There is no real substitute for iDVD.
    Why is there no iDVD on my new Mac? How do I get it and how do I install it?
    https://discussions.apple.com/docs/DOC-3673
    To burn a DVD with iDVD from the latest version of iMovie, you have to export the movie using the Export button and select 480p as the size. Open iDVD and start a new project, then drag that exported movie file into the iDVD menu window, avoiding any drop zones you see.

  • What is the best way of dealing with an "implicit coercion" of an array to a sprite?

    Hello everyone!
         With continued help from this forum I am getting closer to having a working program. I look forward to being able to help others like myself once I finish learning the AS3 ropes.
         I will briefly explain what I am trying to achieve and then follow it up with my question.
    Background
         I have created a 12 x 9 random number grid that populates each cell with a corresponding image based on each cell's numeric value. I have also created a shuffle button that randomizes the numbers in the grid. The problem I am running into is getting my button-click event to clear the current images off the grid in order to assign new ones (i.e. deleting the display stack objects in order to place news ones in the same locations).
    Question
         My question is this: what is the best way to handle an implicit coercion from an array to a sprite? I have pasted my entire code below so that you can see how the functions are supposed to work together. My trouble apparently lies with not being able to use an array value with a sprite (the sprite represents the actual arrangement of the grid on the display stack while the array starts out as a number than gets assigned an image which should be passed to the sprite).
    ============================================================================
    package 
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
    import flash.events.MouseEvent;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.utils.getDefinitionByName;
    public class Blanko extends MovieClip
          // Holds 12*9 grid of cells.
          var grid:Sprite;
          // Holds the shuffle button.
          var shuffleButton:Sprite;
          // Equals 12 columns, 9 rows.
          var cols:int = 12;
          var rows:int = 9;
          // Equals number of cells in grid (108).
          var cells:int = cols * rows;
          // Sets cell width and height to 40 pixels.
          var cellW:int = 40;
          var cellH:int = 40;
          // Holds 108 cell images.
          var imageArray:Array = [];
          // Holds 108 numerical values for the cells in the grid.
          var cellNumbers:Array = [];
          // Constructor calls "generateGrid" and "makeShuffleButton" functions.
          public function Blanko()
               generateGrid();
               makeShuffleButton();
      // Creates and displays the 12*9 grid.
      private function generateGrid():void
           grid = new Sprite;
           var i:int = 0;
           for (i = 0; i < cells; i++)
                cellNumbers.push(i % 9 + 1);
           trace("Before shuffle: ", cellNumbers);
           shuffleCells(cellNumbers);
           trace("After shuffle: ", cellNumbers);
           var _cell:Sprite;
           for (i = 0; i < cells; i++)
                // This next line is where the implicit coercion occurs. "_cell" is a sprite that tries
                   to temporarily equal an array value.
                _cell = drawCells(cellNumbers[i]);
                _cell.x = (i % cols) * cellW;
                _cell.y = (i / cols) * cellH;
                grid.addChild(_cell);
      // Creates a "shuffle" button and adds an on-click mouse event.
      private function makeShuffleButton():void
           var _label:TextField = new TextField();
           _label.autoSize = "center";
           TextField(_label).multiline = TextField(_label).wordWrap = false;
           TextField(_label).defaultTextFormat = new TextFormat("Arial", 11, 0xFFFFFF, "bold");
           _label.text = "SHUFFLE";
           _label.x = 4;
           _label.y = 2;
           shuffleButton = new Sprite();
           shuffleButton.graphics.beginFill(0x484848);
           shuffleButton.graphics.drawRoundRect(0, 0, _label.width + _label.x * 2, _label.height +
                                                _label.y * 2, 10);
           shuffleButton.addChild(_label);
           shuffleButton.buttonMode = shuffleButton.useHandCursor = true;
           shuffleButton.mouseChildren = false;
           shuffleButton.x = grid.x + 30 + grid.width - shuffleButton.width;
           shuffleButton.y = grid.y + grid.height + 10;
           this.addChild(shuffleButton);
           shuffleButton.addEventListener(MouseEvent.CLICK, onShuffleButtonClick);
      // Clears cell images, shuffles their numbers and then assigns them new images.
      private function onShuffleButtonClick():void
       eraseCells();
       shuffleCells(cellNumbers);
       trace("After shuffle: ", cellNumbers);
       for (var i:int = 0; i < cells; i++)
        drawCells(cellNumbers[i]);
      // Removes any existing cell images from the display stack.
      private function eraseCells(): void
       while (imageArray.numChildren > 0)
        imageArray.removeChildAt(0);
      // Shuffles cell numbers (randomizes array).
      private function shuffleCells(_array:Array):void
       var _number:int = 0;
       var _a:int = 0;
       var _b:int = 0;
       var _rand:int = 0;
       for (var i:int = _array.length - 1; i > 0; i--)
        _rand = Math.random() * (i - 1);
        _a = _array[i];
        _b = _array[_rand];
        _array[i] = _b;
        _array[_rand] = _a;
      // Retrieves and assigns a custom image to a cell based on its numerical value.
      private function drawCells(_numeral:int):Array
       var _classRef:Class = Class(getDefinitionByName("skin" + _numeral));
       _classRef.x = 30;
       imageArray.push(_classRef);
       imageArray.addChild(_classRef);
       return imageArray;
    ===========================================================================
         Any help with this is greatly appreciated. Thanks!

    Rothrock,
         Thank you for the reply. Let me address a few things here in the hopes of allowing you (and others) to better understand my reasoning for doing things in this manner (admittedly, there is probably a much better/easier approach to what I am trying to accomplish which is one of the things I hope to learn/discover from these posts).
         The elements inside my "imageArray" are all individual graphics that I had imported, changed their type to movie clips using .Sprite as their base class (instead of .MovieClip) and then saved as classes. The reason I did this was because the classes could then be referenced via "getDefinitionByName" by each cell value that was being passed to it. In this grid every number from 1 to 9 appears randomly 12 times each (making the 108 cells which populate the grid). I did not, at the time (nor do I now), know of a better method to implement for making sure that each image appears in the cell that has the corresponding value (i.e. every time a cell has the value of 8 then the custom graphic/class "skin8" will be assigned to it so that the viewer will be able to see a more aesthetically pleasing numerical representation, that is to say a slightly more fancy looking number with a picture behind it). I was advised to store these images in an array so that I could destroy them when I reshuffle the grid in order to make room for the new images (but I probably messed up the instructions).
         If the "drawCell" function only returns a sprite rather than the image array itself, doesn't that mean that my "eraseCells" function won't be able to delete the array's children as their values weren't first returned to the global variable which my erasing function is accessing?
         As for the function name "drawCells," you have to keep in mind that a) my program has been redesigned in stages as I add new functionality/remove old functionality (such as removing text labels and formatting which were originally in this function) and b) that my program is called "Blanko."
         I will try and attach an Illustrator exported JPG file that contains the image I am using as the class "skin7" just to give you an example of what I'm trying to use as labels (although it won't let me insert it here in this post, so I will try it in the next post).
    Thank you for your help!

  • What's the best monitor to pair with the iMac 21.5inch 2013?

    What's the best display for under £150 to pair with the the iMac 21.5 inch 2013?
    In terms of best match resolution dimensions etc?

    I would highly recomend this one: http://www.amazon.com/AOC-i2367Fh-23-Inch-Screen-Monitor/dp/B009V8F700/ref=sr_1_ 2?ie=UTF8&qid=1391319784&sr=8-2&keywords=aoc+monitor
    It is a great monitor and I will be soon buying one for the same computer you have
    It has the same aspect ratio and same resolution but is a bit bigger but with the iMac having 1" borders arround the display they should line up pretty well.
    Good Luck!!

  • HTTP 500 + FAULT   - what is the best way to deal with in a BPE?

    Symptom
        When calling a service through a SOAP call in PROXY TO SOAP interface (Assync/ Sync) using BPE
         1 - SAP ECC -> ASSYNC -> SAP XI/ PI -> BPE (SYNC) -> Bus Service (ORACLE)
         2 - SAP ECC <- X <- SAP XI/ PI -> BPE (SYNC) <- HTTP 500 <- Bus Service (ORACLE)
    X - BPE doesnu2019t deliver to error at SAP ECC cancels the flow to avoid SYSFAIL
    Note
        What is the best practice in this case to return the error to the ECC?
    1 u2013 It develops an ABAP program to read the database XI/ PI response in search of the Payload (fault).
    2 u2013 It tries to map the exception and continue the flow even with HTTP 500
    3  - It is possible to map http500 + fault (BPM)?
    regards
    Ronaldo

    Hi
    In an integration between SAP ECC and a legacy system (CRM-System not SAP) was used PI SAP and Oracle solution (ServiceBuss)
    SAP ECC -> SAP PI -> SERVICEBUS -> CRM
    ABAP PROXY TO SOAP (ASSYNC/ SYNC)
    Symptom
    When the IP receives a response from the service consumed an error HTTP500 flow is terminated, but without being able to treat. For example, reading the payload attached to the error and returned the same to the ECC
    Doubts
    Is it possible manipulate the contents of the exception received from the service consumed (http500)?
    I made some attempts, but without much success!
    Regards
    Ronaldo de Moraes

  • What is the best keyboard to use with my iPad?

    I'd like use a keyboard for typing on my iPad. What are the best options?
    Thanks, Steve.

    Zagg has a new Bluetooth keyboard for the iPad2 and other devices;
    http://www.zagg.com/accessories/zaggkeys-flex-tablet-keyboard-stand.php

Maybe you are looking for

  • How can I use a refrence background image ?

    HI, I need to register align horizontally and vertically) about 100 images to the first. I don't want to stack or merge them. An ideal way to accomplish this would be to be able to set the first image as a background reference image for all images in

  • IPod 2nd Generation Problem

    So I have tried everything I can think of, I have had this iPod since May and recently I plugged it in and it said that it was corrputed and I had to restore, so I did that. However when I restore it, after it is done, it tells me again that it is st

  • Reg. price maintenance in material master and Costing

    Dear Experts I have maintained price for material in material master and costing,but when I create PO price didn't come from anywhere. Pls help me. Thanks Rajakumar.k

  • Read command line arguments with an ActiveX step

    Hi I would like to read the command line parameters from TestStand startup. I did find an ActiveX resulting in a Object Reference (See Locals.CommandsRef). How do I use this reference to really get the arguments and their count? See also screenshot.

  • Cpu Scheduling

    Please help me .I will highly appreciate it. I need to make a cpu simulation program . Details: I need to iplement a round robin CPU sheduling algorithm.in order to simulate the algorithm for different values of time quantun , I need to declare a var