[MacRuby-devel] Basic delayed email method

Cliff Rosson cliff.rosson at gmail.com
Tue Oct 23 08:51:36 PDT 2012


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 <steve at 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 <mrada at 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 <steve at 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.rosson at 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 <mrada at 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.audio at 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 <mrada at 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.rosson at 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 at lists.macosforge.org
>> >>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>> >>
>> >> _______________________________________________
>> >> MacRuby-devel mailing list
>> >> MacRuby-devel at lists.macosforge.org
>> >> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>> >>
>> >
>> > _______________________________________________
>> > MacRuby-devel mailing list
>> > MacRuby-devel at lists.macosforge.org
>> > http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>
>
>
>
> --
> http://about.me/cliffrosson
> vizualize.me/cliffrosson
>  _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>
>


-- 
http://about.me/cliffrosson
vizualize.me/cliffrosson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20121023/d6d9e885/attachment.html>


More information about the MacRuby-devel mailing list