Here's the answer (thanks, Wayne!). While sending an email from
Supercard as the result of a PowerMail AppleScript hangs, it is OK for
SuperCard to write to the Clipboard and have an AppleScript started by
PowerMail create the message.

tell application "PowerMail"
        set theMessages to current messages
        repeat with msg in theMessages
                -- put your code here to do something on each message msg
                
                if exists (attachments of msg) then
                        set fileList to attachments of msg
                        repeat with theFile in fileList -- this code does not 
handle multiple
CSV attachements
                                set fname to theFile's name
                                if fname contains ".csv" then
                                        set myFile to theFile's file
                                        set theText to my readFile(myFile)
                                end if
                        end repeat
                else
                        set theText to the content of msg & time sent of msg
                end if
                
                -- now send the text to Hypercard
                set the clipboard to ((theText) as text)
                tell application "SuperCard 4.5"
                        activate
                        do script "go to card 1 of stack NSB Invoice SC"
                        do script "send mouseUp to cd button CopyClipboard"
                        do script "send mouseUp to cd button UpdateImport"
                end tell
                set clip to the clipboard
                set AppleScript's text item delimiters to "*"
                set clipList to text items of clip
                set AppleScript's text item delimiters to ""
                set theSubject to item 1 of clipList
                set theName to item 2 of clipList
                set theEmail to item 3 of clipList
                set theMessage to item 4 of clipList
                tell application "PowerMail" to make new message with properties
{subject:theSubject, content:theMessage, status:waiting, recipient:
{{address:{display name:theName, email address:theEmail}, recipient
type:to recipient}}}
        end repeat
end tell

on readFile(theFile)
        read theFile
end readFile



>This script *might* help. It has functions similar to what you are  
>trying. The list has helped me tweak this, so I consider it Public  
>Domain. Feel free to copy/cut/edit it as much as you want.
>
>global theFolder
>
>tell application "PowerMail"
>       set attachFolder to attachment folder
>       set theMessages to current messages
>       repeat with msg in theMessages
>               set msgStatus to status of msg
>               set attachList to attachments of msg
>               if (count items of attachList) > 0 then
>                       set msgAttachFolder to ""
>                       set msgAttachFolder to msgAttachFolder & (ID of msg)
>                       tell application "Finder"
>                               if not (exists folder (attachFolder & 
> msgAttachFolder as string))  
>then
>                                       set theFolder to (make new folder at 
> attachFolder with  
>properties {name:(msgAttachFolder as string)})
>                               else
>                                       set theFolder to folder (attachFolder & 
> msgAttachFolder as string)
>                               end if
>                       end tell
>                       repeat with attachIdx from (count items of attachList) 
> to 1 by -1
>                               set attachFile to file of (item attachIdx of 
> attachList)
>                               tell application "Finder"
>                                       set newAttachFile to (move attachFile 
> to theFolder without  
>replacing) as alias
>                               end tell
>                               delete attachment attachIdx of msg
>                               make new attachment at msg with properties 
> {file:(newAttachFile  
>as alias)}
>                       end repeat
>               end if
>       end repeat
>end tell
>
>
>
>On Jun 2, 2006, at 10:16 AM, George Henne wrote:
>
>> (Wayne: I think I understand you, but the changed code does the  
>> same thing)
>>
>> Here's the latest code.
>>
>> tell application "PowerMail"
>>      set theMessages to current messages
>>      repeat with msg in theMessages
>>              -- put your code here to do something on each message msg
>>              
>>              if exists (attachments of msg) then
>>                      set fileList to attachments of msg
>>                      repeat with theFile in fileList -- this code does not 
>> handle  
>> multiple
>> CSV attachements
>>                              set fname to theFile's name
>>                              if fname contains ".csv" then
>>                                      set myFile to theFile's file
>>                                      set theText to my readFile(myFile)
>>                              end if
>>                      end repeat
>>              else
>>                      set theText to the content of msg & time sent of msg
>>              end if
>>      end repeat
>> end tell
>>
>> -- now send the text to Hypercard
>> set the clipboard to ((theText) as text)
>> tell application "SuperCard 4.5"
>>      activate
>>      do script "go to card 1 of stack NSB Invoice SC"
>>      do script "send mouseUp to cd button CopyClipboard"
>>      do script "send mouseUp to cd button UpdateImport"
>> end tell
>> -- SuperCard will now generate the reply
>>
>> on readFile(theFile)
>>      read theFile
>> end readFile
>>
>>
>>> Try moving your tell statements.
>>> Close the tell for PowerMail, then run your SuperCard, then open a  
>>> new
>>> Tell statement for Powermail to create a new message. That should fix
>>> the problem. It will also prevent PM having to wait for SuperCard  
>>> to finish.
>>>
>>> Wayne
>>>
>>> -----Original Message-----
>>>> From: George Henne <[EMAIL PROTECTED]>
>>>> Sent: Jun 2, 2006 9:34 AM
>>>> To: Wayne Brissette <[EMAIL PROTECTED]>
>>>> Subject: Re(2): Problem running AppleScript that creates email
>>>>
>>>> Wayne,
>>>>
>>>> That's very kind.
>>>>
>>>> I simplified the explanation a bit on the board. The AppleScript
>>>> actually calls Supercard, which is sending the message to  
>>>> Powermail; but
>>>> I think the principle is the same.
>>>>
>>>> tell application "PowerMail"
>>>>    set theMessages to current messages
>>>>    repeat with msg in theMessages
>>>>            -- put your code here to do something on each message msg
>>>>            
>>>>            if exists (attachments of msg) then
>>>>                    set fileList to attachments of msg
>>>>                    repeat with theFile in fileList -- this code does not 
>>>> handle  
>>>> multiple
>>>> CSV attachements
>>>>                            set fname to theFile's name
>>>>                            if fname contains ".csv" then
>>>>                                    set myFile to theFile's file
>>>>                                    set theText to my readFile(myFile)
>>>>                            end if
>>>>                    end repeat
>>>>            else
>>>>                    set theText to the content of msg & time sent of msg
>>>>            end if
>>>>            
>>>>            -- now send the text to Hypercard
>>>>            set the clipboard to ((theText) as text)
>>>>            tell application "SuperCard 4.5"
>>>>                    activate
>>>>                    do script "go to card 1 of stack NSB Invoice SC"
>>>>                    do script "send mouseUp to cd button CopyClipboard"
>>>>                    do script "send mouseUp to cd button UpdateImport"
>>>>            end tell
>>>>  -- SuperCard will now generate the reply
>>>>    end repeat
>>>> end tell
>>>>
>>>> on readFile(theFile)
>>>>    read theFile
>>>> end readFile
>>>>
>>>>
>>>>
>>>>> I'll be happy to take a look at it if you want.
>>>>>
>>>>> Wayne
>>>>>
>>>>> -----Original Message-----
>>>>>> From: George Henne <[EMAIL PROTECTED]>
>>>>>> Sent: Jun 2, 2006 9:05 AM
>>>>>> To: PowerMail Discussions <[EMAIL PROTECTED]>
>>>>>> Subject: Problem running AppleScript that creates email
>>>>>>
>>>>>> I have an AppleScript that runs as a result of a mail filter.  
>>>>>> One of the
>>>>>> things it does is create a PowerMail message. The script runs  
>>>>>> fine by
>>>>>> itself: the problem is that it hangs when it is called from  
>>>>>> PowerMail.
>>>>>>
>>>>>> From what I can determine, PowerMail starts the script and  
>>>>>> waits for it
>>>>>> to finish. The script tries to add an email to PowerMail's  
>>>>>> inbox, but
>>>>>> PowerMail is not accepting events.
>>>>>>
>>>>>> Can anyone think of a way around this? We need PowerMail to  
>>>>>> start the
>>>>>> script, then stop waiting for it.
>>>>>>
>>>>>> George Henne
>>>>>> NS BASIC Corporation
>>>>>> http://www.nsbasic.com
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
>>
>>
>
>





Reply via email to