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'=>'[email protected]',
'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'=>'[email protected]'})
outgoing_msg.toRecipients.addObject(recipient)
outgoing_msg.send
end
make_message
=================
Steve
On 23 Oct 2012, at 16:51, Cliff Rosson <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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
>>>> >>> [email protected]
>>>> >>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>>> >>
>>>> >> _______________________________________________
>>>> >> MacRuby-devel mailing list
>>>> >> [email protected]
>>>> >> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>>> >>
>>>> >
>>>> > _______________________________________________
>>>> > MacRuby-devel mailing list
>>>> > [email protected]
>>>> > http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>>>
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> [email protected]
>>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>>>
>>>>
>>>>
>>>> --
>>>> http://about.me/cliffrosson
>>>> vizualize.me/cliffrosson
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> [email protected]
>>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> [email protected]
>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> [email protected]
>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>
> _______________________________________________
> MacRuby-devel mailing list
> [email protected]
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>
>
>
> --
> http://about.me/cliffrosson
> vizualize.me/cliffrosson
> _______________________________________________
> MacRuby-devel mailing list
> [email protected]
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macruby-devel