Perfect! How did you figure all of this out. Are there some documents that explain when it is appropriate to use things like "classForScriptingClass" etc...?
On Tue, Oct 23, 2012 at 9:49 AM, Steve Clarke <st...@sclarkes.me.uk> wrote: > Hi Cliff, > > I've got something simple to work in Macruby. I think the problems I had > were because of html content. > > Here's an example for plain text: > > ================= > framework 'Foundation' > framework 'ScriptingBridge' > TITLE="title" > def make_message > app=SBApplication.applicationWithBundleIdentifier("com.apple.Mail") > props = { 'subject'=> 'Subject 1', 'sender'=>'st...@sclarkes.me.uk', > 'content'=>'Lorem ipsum ....'} > msg_class = app.classForScriptingClass('outgoing message') > outgoing_msg=msg_class.alloc.initWithProperties(props) > app.outgoingMessages.addObject(outgoing_msg) > recip_class=app.classForScriptingClass('to recipient') > recipient=recip_class.alloc.initWithProperties({'address'=>' > st...@sclarkes.me.uk'}) > outgoing_msg.toRecipients.addObject(recipient) > outgoing_msg.send > end > > make_message > ================= > > Steve > > On 23 Oct 2012, at 16:51, Cliff Rosson <cliff.ros...@gmail.com> wrote: > > Steve how did you get it working with the plain text. Below is the code I > think that is relevant in the SBS program. > > - (IBAction)sendEmailMessage:(id)sender { >> /* create a Scripting Bridge object for talking to the Mail application */ >> MailApplication *mail = [SBApplication applicationWithBundleIdentifier: >> @"com.apple.Mail"]; >> >> /* set ourself as the delegate to receive any errors */ >> mail.delegate = self; >> /* create a new outgoing message object */ >> MailOutgoingMessage *emailMessage = [[[mail classForScriptingClass:@"outgoing >> message"] alloc] initWithProperties: >> [NSDictionary >> dictionaryWithObjectsAndKeys: >> [self.subjectField >> stringValue], @"subject", >> [[self.messageContent >> textStorage] string], @"content", >> nil]]; >> /* add the object to the mail app */ >> [[mail outgoingMessages] addObject: emailMessage]; >> /* set the sender, show the message */ >> emailMessage.sender = [self.fromField stringValue]; >> emailMessage.visible = YES; > > > > Though it is not clear how this would translates over into macruby. I have > tried ever variation of MailOutgoingMessage.new and addObject. > > > On Tue, Oct 23, 2012 at 8:45 AM, Steve Clarke <st...@sclarkes.me.uk>wrote: > >> Hi, >> >> I got something similar working for a plain text email but there are >> additional requirements for HTML emails (which I needed), and I couldn't >> persuade SB to accept html content. I should have made that clear in my >> previous note. If anyone has an example for HTML email with SB it would be >> great to see it. >> >> Just taken a closer look at the scripting dictionary for mail and it >> looks like the "html content" property isn't documented - so who knows how >> I found it in the first place! I just checked it out and it still works >> but obviously can't be relied on. >> >> Apologies for the red herring. It looks as if there is no supported way >> to send html email using ScriptingBridge. >> >> Steve >> >> On 23 Oct 2012, at 15:52, Mark Rada <mr...@marketcircle.com> wrote: >> >> Hi Cliff, >> >> Did you manage to find the SBSendEmail sample code: >> >> >> https://developer.apple.com/library/mac/#samplecode/SBSendEmail/Introduction/Intro.html >> >> The sample they have looks a bit different from what you have. I haven't >> tried it out myself, but their documentation seems quite thorough and was >> updated only a year ago. >> >> >> >> >> >> On 2012-10-23, at 5:28 AM, Steve Clarke <st...@sclarkes.me.uk> wrote: >> >> Just had a closer look at what I did with sending mail and I think my >> earlier reply was probably wrong, or at least not helpful. I think the >> difficulty arises because there are some things that ScriptingBridge is >> unable to do. I could not find a way to create an outgoing message with >> ScriptingBridge and I had to resort to running a trivial applescript (using >> NSAppleScript executeAndReturnError) to do the job for me. If anyone >> knows a better way I'd be delighted to hear about it! >> >> I created the applescript from a template that I modified in my code >> before I executed it. I guess Cliff could adopt a similar approach to copy >> subject, content etc from his draft. >> >> Here's the template. The %HTML% and %SUBJECT% are placeholders that get >> replaced by the actual values before execution. >> >> ========================= >> tell application "Mail" >> activate >> set htmlMsg to "%HTML%" >> set subjecta to "%SUBJECT%" >> set theMsg to make new outgoing message with properties ¬ >> {subject:subjecta, html content:htmlMsg & return & return, content:""} >> end tell >> ========================= >> >> Steve >> >> On 23 Oct 2012, at 07:06, Cliff Rosson <cliff.ros...@gmail.com> wrote: >> >> So playing around a little with this I was able to browse and find >> messages via macruby. On the other hand I cannot figure out how to send a >> drafted email. Here is what I have so far. >> >> My drafts folder has 1 message in it ready to be sent. >> >> mail = SBApplication.applicationWithBundleIdentifier("com.apple.mail") >>> my_account = mail.accounts.select { |account| account.name == >>> "MyAccountName" }.first >>> drafts_folder = my_account.mailboxes.select { |mailbox| mailbox.name == >>> "Drafts" }.first >>> draft = drafts_folder.messages.first >> >> >> I need to use the send method somehow. I think I need to make a new >> MailOutgoingMessage but I would like to make this message based on my >> already existing draft message. >> >> Any know how this is done? >> >> I had hoped it would have been as simple as draft.send. :) >> >> >> On Sat, Oct 20, 2012 at 2:14 PM, Mark Rada <mr...@marketcircle.com>wrote: >> >>> Hi Rob, >>> >>> I think Colin answered this fairly well. Personally, I prefer to use GCD >>> when available because I find the API simpler and GCD stuff works with or >>> without run loops. >>> >>> -- >>> Mark >>> >>> >>> On 2012-10-20, at 2:40 PM, Robert Carl Rice <rice.au...@pobox.com> >>> wrote: >>> >>> > Hi Mark, >>> > >>> > I use NSTimer a lot in my apps. What is the advantage of using GCD API? >>> > >>> > There is an excellent tutorial on the web for specifically for setting >>> up ScriptingBridge for Apple Mail but I forget where I saw it. On warning; >>> if you set up ScriptingBridge for Apple Mail don't try to take a snapshot >>> in Xcode 4. Xcode will follow the link to mail and include all of your >>> mailboxes in the snapshot. I don't know if there is a way to stop this >>> behavior. >>> > >>> > Bob Rice >>> > >>> > On Oct 19, 2012, at 6:50 PM, Mark Rada <mr...@marketcircle.com> wrote: >>> > >>> >> Busy looping for an hour would be really bad. I assume you would have >>> a sleep in there, but then you're still polling. >>> >> >>> >> If you are using MacRuby, looking at the GCD API would be a good >>> idea. You could do something like this: >>> >> >>> >> def schedule_email q >>> >> q.after(3600) do >>> >> # Send email >>> >> schedule_email q >>> >> end >>> >> end >>> >> >>> >> schedule_email Dispatch::Queue.new("com.rosson.delayed.email") >>> >> >>> >> NSRunLoop.currentRunLoop.run >>> >> >>> >> >>> >> >>> >> As for actually sending emails, if you want to have things go through >>> Apple Mail you could use the ScriptingBridge framework which has a few >>> tutorials online (but for iTunes): >>> >> >>> >> >>> http://arstechnica.com/apple/2011/09/tutorial-os-x-automation-with-macruby-and-the-scripting-bridge/ >>> >> >>> >> AXElements is another option that I am biased in favour of; but it >>> may not be passive enough for your requirements. >>> >> >>> >> HTH, >>> >> Mark >>> >> >>> >> >>> >> On 2012-10-19, at 6:12 PM, Cliff Rosson <cliff.ros...@gmail.com> >>> wrote: >>> >> >>> >>> Hi Everyone, >>> >>> >>> >>> I am fairly new to macruby and am having trouble finding some basic >>> documentation to help me out. I would like to write a simple app that sends >>> a delayed email based on Time from mac mail. >>> >>> >>> >>> I am thinking of something like this, >>> >>> >>> >>> time = Time.now + 3600 >>> >>> while true >>> >>> case time >>> >>> when Time.now >>> >>> #Send email >>> >>> end >>> >>> end >>> >>> >>> >>> Being able to respond to certain emails or send an email from a >>> draft would be a huge benefit. Can anyone point me in the write direction >>> to accomplish this? I am decently proficient in ruby but don't know where >>> to start with MacRuby. >>> >>> >>> >>> Thanks everyone >>> >>> >>> >>> _______________________________________________ >>> >>> MacRuby-devel mailing list >>> >>> MacRuby-devel@lists.macosforge.org >>> >>> http://lists.macosforge.org/mailman/listinfo/macruby-devel >>> >> >>> >> _______________________________________________ >>> >> MacRuby-devel mailing list >>> >> MacRuby-devel@lists.macosforge.org >>> >> http://lists.macosforge.org/mailman/listinfo/macruby-devel >>> >> >>> > >>> > _______________________________________________ >>> > MacRuby-devel mailing list >>> > MacRuby-devel@lists.macosforge.org >>> > http://lists.macosforge.org/mailman/listinfo/macruby-devel >>> >>> _______________________________________________ >>> MacRuby-devel mailing list >>> MacRuby-devel@lists.macosforge.org >>> http://lists.macosforge.org/mailman/listinfo/macruby-devel >>> >> >> >> >> -- >> http://about.me/cliffrosson >> vizualize.me/cliffrosson >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo/macruby-devel >> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo/macruby-devel >> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo/macruby-devel >> >> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo/macruby-devel >> >> > > > -- > http://about.me/cliffrosson > vizualize.me/cliffrosson > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo/macruby-devel > > > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo/macruby-devel > > -- http://about.me/cliffrosson vizualize.me/cliffrosson
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo/macruby-devel