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

Reply via email to