5

そこで、AppleScript を使用して添付ファイル付きのメールを送信できるようにしたいと考えました。定期的に私たちにラボを行わせ、電子メールで送信するように要求するこの先生がいるので、これを簡単にするために hazel と applescript を組み合わせることにしました。

基本的に、ドキュメントをフォルダー内の pdf にエクスポートすると、hazel がそれを検出して別のフォルダーに送信し、添付ファイル付きの電子メールを送信するために必要なスクリプトを呼び出します。それが完了すると、hazel はファイルを元のフォルダーに戻し、名前に _sent を追加して、再度送信しないようにします。(ファイルが pdf としてエクスポートされた場合を除き、フォルダーは常に空です)

私の問題は、ファイルが電子メールに添付されていないことです。(そして、ほとんどの場合、スクリプトが正常に実行されなかったというエラーが表示されますが、これは問題ではありません)。

automator を使用して同じ問題が発生しました。ファイルが添付されていませんでした。いくつかのコードを試しましたが、常に同じ問題が発生します。メールはファイルが添付されていない状態で送信されます。コードは次のとおりです。

tell application "Finder"
set folderPath to folder "Macintosh HD:Users:user_directory:Desktop:Send_Mail"
set fileList to name of file 1 in folderPath
end tell

set theSubject to fileList
set theBody to "Hello sir. Here is my " & fileList
set theAddress to "Some Email"
set theAttachment to fileList
set theSender to "Some Sender"

tell application "Mail"
set theNewMessage to make new outgoing message with properties {subject:theSubject,         content:theBody & return & return, visible:true}
    tell theNewMessage
    set visibile to true
    set sender to theSender
    make new to recipient at end of to recipients with properties {address:theAddress}
    try
        make new attachment with properties {file name:fileList} at after the last word of the last paragraph
        set message_attachment to 0
        log "message_attachment = " & message_attachment
    on error
        set message_attachment to 1
    end try
    #tell content
    #   make new attachment with properties {file name:theAttachment, path:fileList}

    #end tell
    #send
    end tell
end tell

イベントログに表示される唯一のメッセージは「値がありません」です。しかし、何が欠けているのかわかりません。

4

3 に答える 3

5

ファイル名とファイルパスを混同しています。添付ファイルのファイル名プロパティは、添付するファイルです。また、tryステートメントにエラーを記録して、それが何であるかを確認できるようにする必要があります。たとえば、エイリアスの代わりに添付ファイルにFinder参照を使用しようとするとエラーが発生します。

tell application "Finder"
    set folderPath to folder "Macintosh HD:Users:user_directory:Desktop:Send_Mail:"
    set theFile to first file in folderPath as alias
    set fileName to name of theFile
end tell

set theSubject to fileName
set theBody to "Hello sir. Here is my " & fileName
set theAddress to "Some Email"
set theAttachment to theFile
set theSender to "Some Sender"

tell application "Mail"
    set theNewMessage to make new outgoing message with properties {subject:theSubject, content:theBody & return & return, visible:true}
    tell theNewMessage
        set visibile to true
        set sender to theSender
        make new to recipient at end of to recipients with properties {address:theAddress}
        try
            make new attachment with properties {file name:theAttachment} at after the last word of the last paragraph
            set message_attachment to 0
        on error errmess -- oops
            log errmess -- log the error
            set message_attachment to 1
        end try
        log "message_attachment = " & message_attachment
        #send
    end tell
end tell
于 2012-04-08T18:39:37.130 に答える
0

user866649 のスクリプトを試しましたが、うまくいきませんでした。いくつかのグーグル検索の後、小さな違いがトリックであることがわかりました。メッセージのコンテンツに添付ファイルを追加するように指示します。私のコードは次のとおりです。

tell application "Finder"
    set folderPath to folder "Macintosh HD:Users:username:folder:"
    set theFile to first file in folderPath as alias
    set fileName to name of theFile
end tell
set theSubject to "Filename: " & fileName
set theBody to "Filename in attachment: " & fileName
set theAddress to "mail@example.com"
set theAttachment to theFile
set theSender to "Name of Sender"
tell application "Mail"
    set theNewMessage to make new outgoing message with properties {subject:theSubject, content:theBody & return & return, visible:true}
    tell theNewMessage
        set visibile to true
        set sender to theSender
        make new to recipient at end of to recipients with properties {address:theAddress}
    end tell
    tell content of theNewMessage
        try
            make new attachment with properties {file name:theAttachment} at after the last word of the last paragraph
            set message_attachment to 0
        on error errmess -- oops
            log errmess -- log the error
            set message_attachment to 1
        end try
        log "message_attachment = " & message_attachment
    end tell
    delay 10
    tell theNewMessage
        send
    end tell
end tell

もちろん、ユーザー名/フォルダ/メールアドレス/送信者名は必要に応じて置き換えてください。

コマンドラインから次のスクリプトを実行します。

osascript path/to/script

Mac OS Catalina でテスト済み。編集: サイズによっては、メールがファイルを添付するのに時間がかかっているようです。遅延を追加すると、問題の解決に役立つように見えました。

于 2020-04-06T16:14:35.540 に答える