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

Reply via email to